提问人:Eli 提问时间:11/17/2023 最后编辑:CowEli 更新时间:11/18/2023 访问量:60
Django Webapp 中的 TemplateDoesNotExist 错误
TemplateDoesNotExist error in Django Webapp
问:
当我尝试使用默认的 django 登录页面时,我收到此错误:
TemplateDoesNotExist 位于 /login/ registration/login.html
这是我的URLS文件:
from django.urls import path
from django.urls import path, include
from . import views
urlpatterns = [
path("", views.home, name="home"),
path("main-page/", views.main_page, name="main-page"),
path("kick-page/", views.kick_page, name="kick-page"),
path('', include("django.contrib.auth.urls")), # add django auth pages for login
]
这是我的观点文件:
from django.shortcuts import render
from django.http import HttpResponse
from django.contrib.auth import login, authenticate
from .forms import * #import all the forms from forms.py
def home (response):
form = SignIn()
return render(response, "main/home.html", {"form": form})
#need a page to select site/microtik, and add/remove microtiks
def main_page (response):
return render(response, "main/main_page.html", {})
#Need a page that shows the selected mictotik and a form to enter MAC of device to kick
def kick_page (response):
return render(response, "main/kick_page.html", {})
这是我的目录结构:
C:.
└───microsite
│ db.sqlite3
│ manage.py
│
├───main
│ │ admin.py
│ │ apps.py
│ │ forms.py
│ │ models.py
│ │ tests.py
│ │ urls.py
│ │ views.py
│ │ __init__.py
│ │
│ ├───migrations
│ │ │ __init__.py
│ │ │
│ │ └───__pycache__
│ │ __init__.cpython-311.pyc
│ │
│ ├───templates
│ │ └───main
│ │ │ base.html
│ │ │ home.html
│ │ │ kick_page.html
│ │ │ main_page.html
│ │ │
│ │ └───registration
│ │ login.html
│ │
│ └───__pycache__
│ admin.cpython-311.pyc
│ apps.cpython-311.pyc
│ forms.cpython-311.pyc
│ models.cpython-311.pyc
│ urls.cpython-311.pyc
│ views.cpython-311.pyc
│ __init__.cpython-311.pyc
│
└───microsite
│ asgi.py
│ settings.py
│ urls.py
│ wsgi.py
│ __init__.py
│
└───__pycache__
settings.cpython-311.pyc
urls.cpython-311.pyc
wsgi.cpython-311.pyc
__init__.cpython-311.pyc
我正在按照 Tech with Tim 的指南尝试将访问控制添加到我的网站,以便用户在访问网站上的其他视图之前必须登录。
我将错误和我的文件信息一起放入聊天 GPT,它一直告诉我,当文件“login.html”未存储在模板文件夹中名为“registration”的文件夹中时,会导致错误。
我已经对拼写进行了三重检查并验证了文件位置,但我仍然无法加载登录页面。我所有其他页面及其模板都加载良好。
如果有人能帮我弄清楚发生了什么,我将不胜感激。
答:
2赞
Temi
11/18/2023
#1
遇到错误的原因是目录的位置。请确保此目录位于项目的根目录中,特别是 。文件的正确路径应该相对于项目的根目录,以便 Django 识别和访问。TemplateDoesNotExist
templates/registration
microsite/templates/registration/login.html
login.html
评论
0赞
Eli
11/18/2023
所以应用程序的模板没有进入应用程序内部?
0赞
Temi
11/18/2023
通常,特定于应用的模板存储在应用的目录中。但是,Django 的身份验证视图(如登录视图)是 Django 框架的一部分,而不是特定于应用程序的。因此,Django 期望与身份验证相关的模板,例如“login.html”位于项目的根目录中。这确保了 Django 可以在需要身份验证视图和 URL 时找到它们。
评论