You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django默认登录页报错TemplateDoesNotExist求解决

Django 默认登录页 TemplateDoesNotExist 问题解决

问题概述

使用Django自带默认登录页面时触发TemplateDoesNotExist错误,提示找不到registration/login.html,模板加载器在项目templates目录及auth、admin的模板目录中均未定位到该文件。

错误详情

TemplateDoesNotExist at /accounts/login/
registration/login.html
请求方法:GET
请求URL:http://134.209.220.170/accounts/login/?next=/timwise/upload/
Django版本:5.0
异常类型:TemplateDoesNotExist
异常值:registration/login.html
异常位置:/usr/local/lib/python3.10/dist-packages/django/template/loader.py第47行,select_template函数中
触发于:django.contrib.auth.views.LoginView
Python可执行文件:/usr/bin/python3
Python版本:3.10.12
模板加载器诊断:
Django按以下顺序尝试加载模板:
使用django引擎:
django.template.loaders.filesystem.Loader: /home/django/django_project/templates/registration/login.html(源不存在)
django.template.loaders.app_directories.Loader: /usr/local/lib/python3.10/dist-packages/django/contrib/admin/templates/registration/login.html(源不存在)
django.template.loaders.app_directories.Loader: /usr/local/lib/python3.10/dist-packages/django/contrib/auth/templates/registration/login.html(源不存在)

当前配置

settings.py 模板配置

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # 'DIRS': [BASE_DIR,  "/home/django/django_project/templates"],
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        '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',
            ],
        },
    },
]

登录跳转视图代码

class FileUploadView(LoginRequiredMixin, CreateView):
    model = Files
    form_class = FileUploadForm
    template_name = 'upload.html'
    success_url = reverse_lazy('success')

    def form_valid(self, form):
        file = form.save()
        filename = file.file.name 
        msg="file name is good"
        print('file loaded successfully')       
        messages.success(self.request, f"File '{filename}' uploaded successfully!")
        return redirect('success', filename=filename, msg=msg)

    def form_invalid(self, form):
        messages.error(self.request, "File upload failed. Please check the file and try again.")
        return super().form_invalid(form)

项目/应用级urls.py

from django.urls import path, include
from .views import UploadHighlights, FileUploadView
from django.views.generic import TemplateView

urlpatterns = [
        path('upload/', FileUploadView.as_view(), name='upload'),
        path('accounts/', include('django.contrib.auth.urls')),
        path('success/<str:filename>/<str:msg>/', TemplateView.as_view(template_name='success.html'), name='success'),
]

解决方案

方案1:手动创建登录模板文件

Django的LoginView默认查找registration/login.html模板,按以下步骤创建:

  • 在项目根目录的templates文件夹内,创建registration子目录
  • 在registration目录下创建login.html文件,示例内容:
<!DOCTYPE html>
<html>
<head>
    <title>登录</title>
</head>
<body>
    <h2>登录</h2>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">登录</button>
    </form>
</body>
</html>

方案2:自定义LoginView指定模板路径

若不想使用默认模板路径,可在urls.py中自定义登录路由,指定已有模板:

from django.urls import path, include
from django.contrib.auth.views import LoginView
from .views import UploadHighlights, FileUploadView
from django.views.generic import TemplateView

urlpatterns = [
        path('upload/', FileUploadView.as_view(), name='upload'),
        # 替换默认登录路由,指定自定义模板路径
        path('accounts/login/', LoginView.as_view(template_name='your_custom_login.html'), name='login'),
        # 保留其他auth路由
        path('accounts/', include('django.contrib.auth.urls')),
        path('success/<str:filename>/<str:msg>/', TemplateView.as_view(template_name='success.html'), name='success'),
]

确保your_custom_login.html存在于templates目录下。

方案3:修复Django auth模块模板文件

若希望使用Django自带默认模板,执行以下操作:

  • 检查路径/usr/local/lib/python3.10/dist-packages/django/contrib/auth/templates/registration/是否存在login.html
  • 若不存在,重新安装Django:
pip install --upgrade django==5.0

额外检查项

  • 确认INSTALLED_APPS中包含django.contrib.auth和django.contrib.messages
  • 确认项目templates目录存在且权限正确(Django进程可读取该目录)

内容的提问来源于stack exchange,提问作者user3808752

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 01:53:12