首页 > 解决方案 > django 无法显示模板 - 如何修复

问题描述

我只是让应用程序用户验证已经在数据库中注册的用户。在项目目录(urls.py)中包含url,从app目录执行urls.py中的登录页面,在base.html中引用模板和链接。一切正常,但是当单击登录链接时返回此错误: TemplateDoesNotExist at users/login/

我试图根据树导航重命名路径,但总是返回同样的错误。知道发生了什么吗?

对不起我的英语

我的项目中的树导航是这样的: my_project

urls.py(项目):

from django.contrib import admin
from django.urls import include, path
app_name = ['app_web_gym', 'users']

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

urls.py(应用程序)

from django.urls import path
from django.contrib.auth import views as auth_views
from . import views

app_name = 'users'

urlpatterns= [
     path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'),
]

base.html:

<p>
    <a href="{% url 'app_web_gym:index' %}">Web Gym</a>-
    <a href="{% url 'app_web_gym:clientes' %}">Clientes</a>-
    <a href="{% url 'app_web_gym:treinos' %}">Treinos</a>-
    <a href="{% url 'app_web_gym:instrutores' %}">Instrutores</a>-
    {% if user.is_authenticated %}
        <p>Hello, {{user.username}}.<p/>
    {% else %}
        <a href="{% url 'users:login' %}">Login</a>
    {% endif %}

</p>

{% block content %} {% endblock content %}

登录.html:

{% extends 'app_web_gym/base.html' %}

{% block content %}
    {% if form.errors %}
        <p>Wrong username/password. Try again.</p>
    {% endif %}

    <form method='POST' action="{% url 'users:login' %}">
        {% csrf_token %}

        {{form.as_p}}
        <button name='submit'>Log in</button>
        <input type='hidden' name='next' value="{% url 'app_web_gym:index' %}" />
    </form>
{% endblock content %}

我打印了完整的错误: TemplateDoesNotExist

我注意到说Django 尝试在最后一行按此顺序加载这些模板->

/home/at_admin/prj01/app_web_gym/templates/users/login.html(来源不存在)

那是 login.html 的错误路径,正确的是

/home/at_admin/prj01/users/templates/users/login.html如树形导航所示。我不知道为什么会发生这种情况,也不知道如何解决。

标签: pythondjangopython-3.xdjango-templates

解决方案


首先,您应该检查该应用程序是否已安装在您的设置中。正如它在错误中看到的那样,文件被查看到了错误的位置(app_web_gym/users/login.html)而不是(users/login.html)。所以我想你在 settings.py 中安装你的应用程序时犯了一个错误。


推荐阅读