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 struct模块解析
Jun 12 Python
零基础写python爬虫之urllib2使用指南
Nov 05 Python
Python实现爬取需要登录的网站完整示例
Aug 19 Python
python实现基于SVM手写数字识别功能
May 27 Python
对Python中DataFrame按照行遍历的方法
Apr 08 Python
Pandas 合并多个Dataframe(merge,concat)的方法
Jun 08 Python
Python global全局变量函数详解
Sep 18 Python
Python进阶之自定义对象实现切片功能
Jan 07 Python
python实现爬山算法的思路详解
Apr 09 Python
python下载卫星云图合成gif的方法示例
Feb 18 Python
Python urlencode和unquote函数使用实例解析
Mar 31 Python
Python Scrapy多页数据爬取实现过程解析
Jun 12 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
DC这些乐高系列动画电影你看过几部?
2020/04/09 欧美动漫
PHP控制网页过期时间的代码
2008/09/28 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
2014/10/14 PHP
php array_key_exists() 与 isset() 的区别
2016/10/24 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
2013/06/27 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
2020/11/18 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
详解vue的数据binding绑定原理
2017/04/12 Javascript
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
原生JavaScript实现购物车
2021/01/10 Javascript
Python读取图片EXIF信息类库介绍和使用实例
2014/07/10 Python
python实现将pvr格式转换成pvr.ccz的方法
2015/04/28 Python
对python3新增的byte类型详解
2018/12/04 Python
Python Flask框架扩展操作示例
2019/05/03 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
关于pytorch处理类别不平衡的问题
2019/12/31 Python
pytorch模型预测结果与ndarray互转方式
2020/01/15 Python
Python网页解析器使用实例详解
2020/05/30 Python
使用CSS3制作倾斜导航条和毛玻璃效果
2017/09/12 HTML / CSS
旧时光糖果:Old Time Candy
2018/02/05 全球购物
计算机本科生自荐信
2013/10/15 职场文书
群众路线剖析材料
2014/02/02 职场文书
《木笛》教学反思
2014/03/01 职场文书
毕业生求职信
2014/06/10 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书
费用申请报告范文
2015/05/15 职场文书
2016思想纪律作风整顿心得体会
2016/01/23 职场文书