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

如何配置Django的settings.py,使错误时返回自定义HTML页面?

Django 配置自定义错误页面指南

要让Django在发生各类错误(如页面不存在、服务器内部错误、权限不足等)时返回自定义HTML页面,而非默认错误页,按以下步骤操作:

1. 创建自定义错误模板

在项目的templates目录下新建errors子目录(也可直接放在templates根目录),为常见错误码创建对应的HTML文件,比如404.html(页面不存在)、500.html(服务器内部错误)、403.html(权限不足)、400.html(请求错误)。这些模板可以完全自定义样式,和你的网站布局保持一致。

2. 配置settings.py

  • 关闭调试模式:将DEBUG设为False,因为DEBUG=True时Django会显示内置的调试页面,仅在生产环境(DEBUG=False)才会启用自定义错误页。
    DEBUG = False
    
  • 确保模板目录可被识别:检查TEMPLATES配置里的DIRS项,确认包含存放错误模板的templates目录路径:
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [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',
                ],
            },
        },
    ]
    
  • 配置允许的主机:DEBUG=False时必须设置ALLOWED_HOSTS,否则会触发服务器错误:
    ALLOWED_HOSTS = ['你的域名', 'www.你的域名']  # 示例:['example.com', 'www.example.com']
    

3. 可选:自定义错误视图(复杂场景)

如果需要在错误页中传递额外数据、添加逻辑处理(比如记录错误日志),可以在项目根目录的urls.py中配置自定义错误视图:

方式一:直接用模板视图

from django.urls import path
from django.views.generic.base import TemplateView

handler404 = TemplateView.as_view(template_name='errors/404.html')
handler500 = TemplateView.as_view(template_name='errors/500.html')
handler403 = TemplateView.as_view(template_name='errors/403.html')
handler400 = TemplateView.as_view(template_name='errors/400.html')

方式二:自定义视图函数

from django.shortcuts import render

def custom_404(request, exception):
    # 这里可以添加额外逻辑,比如写入错误日志
    return render(request, 'errors/404.html', status=404)

def custom_500(request):
    return render(request, 'errors/500.html', status=500)

handler404 = custom_404
handler500 = custom_500

测试自定义错误页

设置DEBUG=False后,访问不存在的路径即可看到404自定义页;故意在视图中抛出异常(比如raise Exception("测试错误")),即可触发500自定义页。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:32:20