python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)


Posted in Python onMarch 09, 2020

有没有一种方法可以为Django项目中的每个应用程序创建多个自定义错误模板,我的意思是,在我的项目中,我有3个应用程序,每个应用程序将显示3种不同的custom 404错误.

现在,我在后台应用程序和前台显示相同的404错误页面.

最佳答案

创建一个自定义error view并将其分配给根urls.py中的handler404变量:

from django.views.defaults import page_not_found
 
def my_error_404(request, exception):
 template_name = '404.html'
 if request.path.startswith('/backoffice/'):
  template_name='backoffice/404.html'
 elif request.path.startswith('/frontoffice/'):
  template_name='frontoffice/404.html'
 return page_not_found(request, exception, template_name=template_name)

此代码适用于Django 1.9.如果使用django< = 1.9,则从视图中删除exception参数.

知识点补充:

Django 自定义 404 500 等错误页面

起步
要想自定义错误页面,需要关闭调试模式 DEBUG = False ,因为调试模式的错误页面是开发下会显示错误信息的。

有两种方法可以实现自定义的错误页面。

方法一:创建特定命名的模板文件

这是一种非常简单的方式。在项目模板文件夹 templates 中创建命名为 404.html 的模板文件即可。

这个方式是其实是借用了 Django 的模板查找规则进行的。源码在 django.views.defaults.py 中:

ERROR_404_TEMPLATE_NAME = '404.html'

def page_not_found(request, exception, template_name=ERROR_404_TEMPLATE_NAME):
    ...

总的来说,方法一不需要设路由,只要新建规定名称的模板就能生效了。

方法二:设置句柄

如果需要更个性化的错误页面,不需要拘泥于特定的模板文件名,可以重新设置句柄,具体是在 urls.py 中设置:

# urls.py
def page_not_found(request, exception):
 return render(request, 'your_404_filename.html')

handler404 = page_not_found

urlpatterns = [
 ...
]

除了能捕获不存在路由地址,还能捕获视图中 raise Http404('message') 抛出的异常。

哪些错误页面可以配置
具体能自定义错误页面的有 4 中状态码:

# django.views.defaults.py
ERROR_404_TEMPLATE_NAME = '404.html'
ERROR_403_TEMPLATE_NAME = '403.html'
ERROR_400_TEMPLATE_NAME = '400.html'
ERROR_500_TEMPLATE_NAME = '500.html'

# django.conf.urls.__init__.py
handler400 = defaults.bad_request
handler403 = defaults.permission_denied
handler404 = defaults.page_not_found
handler500 = defaults.server_error

总结

到此这篇关于python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)的文章就介绍到这了,更多相关python django自定义404页面内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Linux下使用Python的matplotlib绘制数据图的教程
Jun 11 Python
pandas使用get_dummies进行one-hot编码的方法
Jul 10 Python
python顺序的读取文件夹下名称有序的文件方法
Jul 11 Python
flask session组件的使用示例
Dec 25 Python
python面向对象实现名片管理系统文件版
Apr 26 Python
django的ORM操作 删除和编辑实现详解
Jul 24 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
Feb 29 Python
Python使用ElementTree美化XML格式的操作
Mar 06 Python
Django更新models数据库结构步骤
Apr 01 Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 Python
Python selenium实现断言3种方法解析
Sep 08 Python
Python模块相关知识点小结
Mar 09 #Python
Django操作session 的方法
Mar 09 #Python
Python装饰器用法与知识点小结
Mar 09 #Python
Django中的session用法详解
Mar 09 #Python
python实现引用其他路径包里面的模块
Mar 09 #Python
python+opencv边缘提取与各函数参数解析
Mar 09 #Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
Mar 09 #Python
You might like
用Apache反向代理设置对外的WWW和文件服务器
2006/10/09 PHP
php str_replace的替换漏洞
2008/03/15 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
JavaScript写的一个自定义弹出式对话框代码
2010/01/17 Javascript
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
利用js(jquery)操作Cookie的方法说明
2013/12/19 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
jQuery右下角悬浮广告实例
2016/10/17 Javascript
AngularJS打开页面隐藏显示表达式用法示例
2016/12/25 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
2017/12/25 jQuery
JS中常用的消息框总结
2018/02/24 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
es6中使用map简化复杂条件判断操作实例详解
2020/02/19 Javascript
[04:26]DOTA2上海特锦赛小组赛第二日 TOP10精彩集锦
2016/02/27 DOTA
Python迭代和迭代器详解
2016/11/10 Python
python3中eval函数用法使用简介
2019/08/02 Python
解决django同步数据库的时候app models表没有成功创建的问题
2019/08/09 Python
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
Linux面试题LINUX系统类
2014/11/19 面试题
普通院校学生的自荐信
2013/11/27 职场文书
赞美老师的演讲稿
2014/05/22 职场文书
校友回访母校寄语
2015/02/26 职场文书
家长会主持词开场白
2015/05/29 职场文书
趣味运动会赞词
2015/07/22 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书