Django URL 不呈现模板

如何解决Django URL 不呈现模板

django 没有将我定向到页面,而是简单地返回以下错误

“C:\Users\RodrigoPinto\Desktop\Insider\users\register”不存在

这是我的网址;

from django.urls import path
from users import employee_views
from users import views as auth_views
from django.contrib.auth.views import LoginView,logoutView

app_name = 'users'

urlpatterns = [
    path('login/',LoginView.as_view(template_name='users/login.html')),path('logout/',logoutView.as_view(template_name='users/logout.html'),name='logout'),path('register/',auth_views.Register.as_view,name='register'),path('profile/',auth_views.Profile.as_view,name='profile'),path('listView/',employee_views.AccountsListView.as_view,name='listView'),path('update/<pk>/',employee_views.AccountsUpdate.as_view,name='updateView'),path('password_update/<pk>/',employee_views.update_password,name='password_update'),path('delete/<pk>/',employee_views.AccountsDelete.as_view,name='deleteView'),]

在主应用程序中,我在 URL 中有这个;

from django.contrib import admin
from django.urls import path,include
from django.conf import settings
from django.conf.urls.static import static
from users import urls as user_urls

app_name = "inside"

urlpatterns = [
    path('admin/',admin.site.urls),path('',include('inside.urls')),path('users/',include(user_urls)),]


if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

过去两个小时我一直在阅读这段代码,但我不明白我做错了什么。也许有人可以看到我遗漏的东西。

我在设置中的模板目录也是这样配置的;

template_dir = [
    os.path.join(BASE_DIR,'users','templates'),os.path.join(BASE_DIR,'forums',]


TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates','Dirs': template_dir,'APP_Dirs': True,'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},]

views.py;

from django.urls import reverse_lazy
from .forms import UserCreateForm
from django.views.generic import CreateView,TemplateView
from django.contrib.messages.views import SuccessMessageMixin
from django.contrib.auth.mixins import LoginrequiredMixin


class Register(SuccessMessageMixin,CreateView):
    form_class = UserCreateForm
    success_url = reverse_lazy('users:login')
    template_name = 'users/register.html'
    success_message = 'Your Account has been created!'


class Profile(LoginrequiredMixin,TemplateView):
    template_name = 'users/profile.html'

单独的文件以保持代码更干净employee_views.py;

from django.views.generic import TemplateView,ListView,UpdateView,DeleteView
from django.contrib.messages.views import SuccessMessageMixin
from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginrequiredMixin
from django.contrib.messages import error,success
from django.shortcuts import redirect,reverse
from django.urls import reverse_lazy
from django.shortcuts import render
from .models import User


@login_required()
def update_password(request,pk):
    if request.method == "POST":
        form_data = request.POST
        if form_data['password1'] == form_data['password2'] and len(form_data['password1']) > 7:
            u = User.objects.get(pk=pk)
            u.set_password(form_data['password1'])
            success(request,"Your Password has been updated!")
            u.save()
            return redirect(reverse('users:listView'))
        else:
            error(request,"Please check your passwords!")
            return render(request,"users/users/change_password.html",context={'pk': pk})

    return render(request,context={'pk': pk})


class Profile(LoginrequiredMixin,TemplateView):
    template_name = 'users/profile.html'


class AccountsListView(LoginrequiredMixin,ListView):
    model = User
    paginate_by = 15
    template_name = "users/profile.html"


class AccountsUpdate(LoginrequiredMixin,SuccessMessageMixin,UpdateView):
    model = User
    fields = ('username','first_name','last_name','email','image','is_admin','is_supervisor',)
    template_name = 'user_update_form.html'
    success_url = reverse_lazy('users:listView')


class AccountsDelete(LoginrequiredMixin,DeleteView):
    model = User
    success_url = reverse_lazy('users:listView')
    template_name = 'users/user_confirm_delete.html'

解决方法

如果您使用基于通用类的视图,您需要具有这样的结构

app_name
|
|--templates
    | 
    | -- app_name
            |
            |--register.html

如果错误发生在登录 url 上,它会在 register.html 的指定模板中查找。

,

这个陈述中的问题有 99% 的把握:

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

我猜在你的 settings.py 中你有类似的东西

MEDIA_URL = '/users/register/'
MEDIA_ROOT = 'C:/....../register'

您访问 "127.0.0.1:8000/users/register/ 并且 static(...) 捕获请求并准确生成您收到的错误消息。

这也是你没有得到通常详细的 Django 错误跟踪的原因。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?