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 相关文章推荐
python 解析XML python模块xml.dom解析xml实例代码
Feb 07 Python
浅析Python的Django框架中的Memcached
Jul 23 Python
Python for Informatics 第11章之正则表达式(二)
Apr 21 Python
Vue的el-scrollbar实现自定义滚动
May 29 Python
Python Matplotlib库安装与基本作图示例
Jan 09 Python
Python+PyQt5实现美剧爬虫可视工具的方法
Apr 25 Python
利用Python实现kNN算法的代码
Aug 16 Python
Python 实现网课实时监控自动签到、打卡功能
Mar 12 Python
手把手教你安装Windows版本的Tensorflow
Mar 26 Python
Django集成MongoDB实现过程解析
Dec 01 Python
Python项目打包成二进制的方法
Dec 30 Python
Python实现淘宝秒杀功能的示例代码
Jan 19 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
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
php实现下载限制速度示例分享
2014/02/13 PHP
ThinkPHP模板替换与系统常量及应用实例教程
2014/08/22 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
2016/04/11 PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
2016/05/21 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
PHP/HTML混写的四种方式总结
2017/02/27 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
javascript第一课
2007/02/27 Javascript
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
2014年50个程序员最适用的免费JQuery插件
2014/12/15 Javascript
node.js中的fs.chmodSync方法使用说明
2014/12/18 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
javascript常用函数(1)
2015/11/04 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
2016/04/17 Javascript
Vue.js每天必学之构造器与生命周期
2016/09/05 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
2018/05/03 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
微信小程序template模板与component组件的区别和使用详解
2019/05/22 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
2020/01/04 Javascript
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
Python爬取网易云音乐热门评论
2017/03/31 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
建筑工程技术应届生求职信
2013/11/17 职场文书
人事部专员岗位职责
2014/03/04 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js