Django Webapp 中的 TemplateDoesNotExist 错误

TemplateDoesNotExist error in Django Webapp

提问人:Eli 提问时间:11/17/2023 最后编辑:CowEli 更新时间:11/18/2023 访问量:60

问:

当我尝试使用默认的 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”的文件夹中时,会导致错误。

我已经对拼写进行了三重检查并验证了文件位置,但我仍然无法加载登录页面。我所有其他页面及其模板都加载良好。

如果有人能帮我弄清楚发生了什么,我将不胜感激。

Python Django Web 应用程序

评论

0赞 Temi 11/17/2023
您是否在INSTALLED_APPS设置中添加了您的应用?
0赞 Eli 11/18/2023
是的,很抱歉,我没有包含我的 settings.py 文件,因为它不喜欢我的格式。

答:

2赞 Temi 11/18/2023 #1

遇到错误的原因是目录的位置。请确保此目录位于项目的根目录中,特别是 。文件的正确路径应该相对于项目的根目录,以便 Django 识别和访问。TemplateDoesNotExisttemplates/registrationmicrosite/templates/registration/login.htmllogin.html

评论

0赞 Eli 11/18/2023
所以应用程序的模板没有进入应用程序内部?
0赞 Temi 11/18/2023
通常,特定于应用的模板存储在应用的目录中。但是,Django 的身份验证视图(如登录视图)是 Django 框架的一部分,而不是特定于应用程序的。因此,Django 期望与身份验证相关的模板,例如“login.html”位于项目的根目录中。这确保了 Django 可以在需要身份验证视图和 URL 时找到它们。