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

Django 3.2配置404跳转至首页不生效该如何解决?

Django 3.2 自定义404重定向不生效解决方案

常见原因及对应解决方法

1. handler404配置位置错误

handler404 必须配置在项目根urls.py(即settings.py中ROOT_URLCONF参数指向的urls文件)的全局作用域,不能写在子应用的urls.py内,也不能放在urlpatterns列表中,否则无法被Django识别加载。

2. 模块导入错误

要确认两处导入逻辑正确:

  • views.py中需要提前导入HttpResponseRedirect,否则启动时虽然可能不报错,但运行时会触发异常返回默认错误页:
    from django.http import HttpResponseRedirect
  • 根urls.py中导入的views模块,必须是定义了view_404函数的对应视图模块,不能和其他app的views混淆。

3. ALLOWED_HOSTS配置异常

DEBUG=False 时必须在settings.py中正确配置ALLOWED_HOSTS,例如本地测试时设置为:
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
配置错误时Django会优先抛出400错误,也会干扰404处理逻辑的正常触发。

4. 中间件拦截响应

如果配置了自定义中间件,需要排查是否有中间件在响应阶段修改了404状态的返回结果,覆盖了你自定义的重定向逻辑。

正确配置参考

项目根urls.py

from django.contrib import admin
from django.urls import path
# 替换为你实际的app名称导入对应views
from your_app_name import views

urlpatterns = [
    path('admin/', admin.site.urls),
    # 其余自定义路由
]

# handler404放在urlpatterns外面,全局配置
handler404 = views.view_404

对应views.py

from django.http import HttpResponseRedirect

def view_404(request, exception=None):
    return HttpResponseRedirect("/")

配置完成后重启Django服务即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:54:00