Django中「Page not found (404)」错误无法解决,寻求帮助
Django 404错误排查与修复
核心问题拆解
- URL路由冲突:
database/urls.py里两个空路径path('', ...),Django只会匹配第一个views.user_login,后面的index_antragsteller永远不会被触发。 - 重定向逻辑错误:你在登录验证后直接重定向到模板文件路径(
/templates/htmlcode/homeAntragsteller.html),这完全不符合Django的工作逻辑——Django是通过URL路由到视图,再由视图返回模板,而非直接访问模板文件路径。
分步修复方案
1. 修正URL路由配置
修改database/urls.py,给两个视图设置不同的URL路径,避免冲突:
urlpatterns = [ path('login/', views.user_login, name='login'), # 登录页用/login/路径 path('', views.index_antragsteller, name='index_antragsteller'), # 首页用根路径 ]
2. 修正登录后的重定向逻辑
登录验证通过后,不要直接写模板路径,而是通过视图name反向解析URL进行重定向:
from django.shortcuts import redirect, reverse def user_login(request): # 你的登录验证逻辑 if 验证通过: # 用视图name生成正确的URL,而非模板文件路径 return redirect(reverse('index_antragsteller')) # 其他登录失败逻辑
3. 确认视图的模板渲染路径
index_antragsteller视图里的render函数,模板路径要写相对于templates目录的相对路径,不需要加templates/前缀:
from django.contrib.auth.decorators import login_required from django.shortcuts import render @login_required def index_antragsteller(request): # 你的业务逻辑 return render(request, 'htmlcode/homeAntragsteller.html')
4. 检查模板目录配置(可选)
确保项目settings.py里的模板目录配置正确,默认应该已经包含,但可以确认:
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / 'templates'], # 指向你的templates文件夹 'APP_DIRS': True, # 其他配置项... }, ]
验证流程
- 重启Django开发服务器
- 访问
http://127.0.0.1:8000/login/完成登录 - 登录成功后会自动跳转到根路径
http://127.0.0.1:8000/,由index_antragsteller视图渲染对应模板
内容的提问来源于stack exchange,提问作者Holly2207
相关产品推荐
相关产品推荐

