1.将DEBUG=False,只有关闭debug才会调用错误处理函数。
- 主目录下urls.py中定义
# 定义错误跳转页面
from articles.views import permission_denied,page_not_found,page_error
handler403 = permission_denied #403禁止访问
handler404 = page_not_found #页面不存在
handler500 = page_error #系统错误
3.自定义相关错误视图
def permission_denied(request,exception=None):
#全局403处理函数
from django.shortcuts import render_to_response
response = render_to_response('error/403.html', {})
response.status_code = 403
return response
def page_not_found(request, exception=None):
#全局404处理函数
from django.shortcuts import render_to_response
response = render_to_response('error/404.html', {})
response.status_code = 404
return response
def page_error(request,exception=None):
#全局500处理函数
from django.shortcuts import render_to_response
response = render_to_response('error/500.html', {})
response.status_code = 500
return response
注意:刚开始我自定义上面处理函数,只接受了一个request参数,导致
DEBUG = True时为

为False时就成了500

那为啥404就变成了500呢,那可能原因就是出在404那导致系统错误,从而发生500错误。然后通过在技术群里面问其他大佬,提示查官方文档,原来少了个exception参数导致的,加上即可。

总结:
有问题还是先到官网多看看查找相关源头,说不定比在网上搜一整天效率高多了!
网友评论