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

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,
        # 其他配置项...
    },
]

验证流程

  1. 重启Django开发服务器
  2. 访问http://127.0.0.1:8000/login/完成登录
  3. 登录成功后会自动跳转到根路径http://127.0.0.1:8000/,由index_antragsteller视图渲染对应模板

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 10:42:22