Django 404与500错误页全局配置及静态文件处理指南
本文详解Django中如何全局配置404和500错误页面。通过修改urls.py和views.py定义错误处理视图,并在settings.py中关闭DEBUG模式以启用生产环境配置。针对关闭DEBUG后静态文件无法加载的问题,提供了通过配置STATIC_ROOT和urls.py中的serve视图来正确代理静态资源的解决方案,确保项目部署时页面与资源正常显示。
Django全局错误页配置概述
本文基于Django 2.2.7版本,介绍如何在全局范围内配置404和500错误页面,并解决由此引发的静态文件路径问题。
配置404与500错误处理视图
首先需要在项目的urls.py文件中进行相关设置。
urlpatterns = [
..............
]
handler404 = 'first.views.page_not_found' #handler404为固定写法,first.views.page_not_found为404处理函数的位置
handler500 = 'first.views.page_error' #同上
接着在指定的views.py文件中编写对应的处理逻辑。
#全局404
def page_not_found(request,exception):
from django.shortcuts import render_to_response
response = render_to_response('first/404.html',{}) #first/404.html html页面
response.status_code = 404
return response
#全局500
def page_error(exception):
from django.shortcuts import render_to_response
response = render_to_response('first/500.html',{})
response.status_code = 500
return response
保存代码并运行项目,在浏览器地址栏输入一个不存在的页面URL进行测试。

修改Settings启用生产模式
此时会发现并未进入之前配置的页面,这是因为还需要在settings.py中进行进一步配置。
打开settings.py文件,找到相关配置项。
# SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = []
将其修改为以下形式:
DEBUG = False #关闭debug模式 这时为生产模式,在将项目部署到服务器时也需要关闭,debug模式会暴露站点的多种信息 ALLOWED_HOSTS = ['*'] # * 为所有都可访问,部署服务器时需修改
保存配置后再次运行项目。

此时能够进入配置的页面,但按下F12开发者工具发现所有的静态文件如css、js、图片等都没找到,均显示为404错误。
解决生产模式下的静态文件加载问题
再次进入settings文件,因为我们开启了生产模式所以Django不再代理静态文件,可以通过配置来再次代理。
找到我们曾经写的media及static配置。
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
STATIC_URL = '/static/'
STATICFILES_DIRS =[
os.path.join(BASE_DIR, 'static'),
]
将
STATICFILES_DIRS =[
os.path.join(BASE_DIR, 'static'),
] 注释
增加
STATIC_ROOT = os.path.join(BASE_DIR,'static')
保存后在URLS中添加
from django.urls import path,re_path
from tlmzp.settings import MEDIA_ROOT,STATIC_ROOT
from django.views.static import serve
urlpatterns = [
..................
re_path(r'^media/(?P<path>.*)$', serve, {'document_root': MEDIA_ROOT}), #media文件
re_path(r'^static/(?P<path>.*)$', serve, {'document_root': STATIC_ROOT}),#static文件
]
保存配置后刷新页面。

所有的静态文件就都加载了。
到此这篇关于Django 404、500页面全局配置知识点详解的文章就介绍到这了,更多相关Django 404、500页面全局配置内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













