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

Django项目自定义404/403页面无法生效,寻求排查方案

Django自定义404错误页面不生效的排查方案

针对你遇到的问题,结合提供的代码,从以下几个方向逐一排查:

1. 修复模板结构冲突

你的404.html中直接写了<html>标签,但已经通过{% extends "../base.html" %}继承了基础模板。通常base.html会包含完整的<html>、<head>等根结构,重复添加会导致浏览器渲染异常,看起来像是自定义页面未生效。

修改404.html,删除多余的根标签,只保留块内容:

{% extends "../base.html" %}
{% load static %}
{% load i18n %}

{% block title %}<h1>404 - {% trans "Page not found" %}</h1>{% endblock %}

{% block content %}
<p>The page your looking for could not be found</p>
{% endblock %}

2. 确认handler404的配置位置

handler404 = 'main_app.views.error_404'必须配置在项目根目录的urls.py中,而非某个app的urls.py文件里。Django只会读取根urls中的错误处理器配置。

3. 二次验证模板路径匹配

虽然你确认路径无误,但再核对模板文件的实际存放结构:

  • 若main是你的app,模板文件应放在main/templates/main/errors/404.html
  • 确保settings.py的TEMPLATES配置中,APP_DIRS设为True,或者DIRS包含模板所在的父目录

4. 检查ALLOWED_HOSTS配置

当DEBUG=False时,必须正确配置ALLOWED_HOSTS(如ALLOWED_HOSTS = ['your-domain.com', 'localhost']),否则Django会返回500错误,而非自定义404页面。

5. 排查中间件干扰

检查settings.py的MIDDLEWARE列表,是否有自定义中间件或第三方中间件拦截了错误响应。可临时注释非必要的中间件,测试是否能正常触发自定义404视图。


内容的提问来源于stack exchange,提问作者Ilian Gion Häsler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:00:17