后台-插件-广告管理-内容页广告位一(手机)

您现在的位置是:首页 > 编程语言 > pythonpython

Django中创建自定义错误页面(400,403,404,500)

2021-04-18 18:39:43python人已围观

简介在浏览网页的时候,浏览者可能会输入错误的URL,或者访问的网页不再存在是很常见的。这种情况下,你一般都会怎么处理呢?
有三种选择:
重定向到网站的首页;
显示无聊的400/403/404/5

在浏览网页的时候,浏览者可能会输入错误的URL,或者访问的网页不再存在是很常见的。这种情况下,你一般都会怎么处理呢?

有三种选择:
重定向到网站的首页;
显示无聊的400/403/404/500页面,并提供一链接可链接至首页;
创建一有趣的自定义400/403/404/500错误页面。
这篇文章主要介绍在Django中如何自定义错误页面,分为下面四个步骤:
创建自定义错误页面
在项目的templates目录下,创建errors目录,然后在此目录下分别创建好page_400.html,page_403.html,page_404.html,page_500.html。

修改settings.py设置
修改项目目录下的settings.py,设置 DEBUG=False 以及 ALLOWED_HOST=["*"] 。这是因为自定义的错误页面只会在非调试模式下生效。

修改视图
在项目的views.py中,创建如下的错误页面处理方法:

from django.shortcuts import render

def bad_request(request):
return render(request,'errors/page_400.html')

def permission_denied(request):
return render(request,'errors/page_403.html')

def page_not_found(request):
return render(request,'errors/page_404.html')

def server_error(request):
return render(request,'errors/page_500.html')
1
2
3
4
5
6
7
8
9
10
11
12
13
配置urls
在项目的urls.py文件中,导入handler400,handler403,handler404,handler500,重新设置错误页面的处理为我们上面views.py里创建的方法:

from . import views
from django.conf.urls import handler400, handler403, handler404, handler500


urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^myapp/', include('myapp.urls', namespace='myapp')),
]

handler400 = views.bad_request
handler403 = views.permission_denied
handler404 = views.page_not_found
handler500 = views.server_error
1
2
3
4
5
6
7
8
9
10
11
12
13
至此,重新运行,输入错误的网址可以看到显示的是我们创建的自定义404页面。

TIPS
若你使用的是Django 2.0版本,则上述会报如下的错误:
“handler404() got an unexpected keyword argument ‘exception’”
这是因为在新版本中内置的错误处理方法签名有更改导致的,具体可以看:https://docs.djangoproject.com/en/2.0/ref/views/#error-views
只需要在修改views.py中代码为:

from django.shortcuts import render

def bad_request(request, exception, template_name='errors/page_400.html'):
return render(request, template_name)

def permission_denied(request, exception, template_name='errors/page_403.html'):
return render(request, template_name)

def page_not_found(request, exception, template_name='errors/page_404.html'):
return render(request, template_name)

def server_error(request, exception, template_name='errors/page_500.html'):
return render(request, template_name)

本文首发于python黑洞网,博客园同步跟新

文章来源:查看

Tags:自定义   创建   错误   页面   Django

很赞哦! ()

后台-插件-广告管理-内容页广告位二(手机)
后台-插件-广告管理-内容页广告位三(手机)
后台-插件-广告管理-内容页广告位四(手机)

文章评论

留言与评论(共有 0 条评论)
   
验证码:

本栏推荐

站点信息

  • 文章统计13614篇文章
  • 浏览统计468次浏览
  • 评论统计1个评论
  • 标签管理标签云
  • 统计数据:统计代码
  • 微信公众号:扫描二维码,关注我们