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常用正则表达式符号浅析
Aug 13 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
Jun 20 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
Oct 25 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
Oct 09 Python
python多线程抽象编程模型详解
Mar 20 Python
利用python计算windows全盘文件md5值的脚本
Jul 27 Python
python中通过selenium简单操作及元素定位知识点总结
Sep 10 Python
基于python cut和qcut的用法及区别详解
Nov 22 Python
使用Puppeteer爬取微信文章的实现
Feb 11 Python
利用Python如何实时检测自身内存占用
May 09 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
Aug 07 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
Dec 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
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
PHP检测接口Traversable用法详解
2017/12/29 PHP
PHP 实现文件压缩解压操作的方法
2019/06/14 PHP
JavaScript 图像动画的小demo
2012/05/23 Javascript
解决jquery1.9不支持browser对象的问题
2013/11/13 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
JS判断、校验MAC地址的2个实例
2014/05/05 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
webpack打包js的方法
2018/03/12 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
Python实现的数据结构与算法之快速排序详解
2015/04/22 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
Django在win10下的安装并创建工程
2017/11/20 Python
python3 selenium 切换窗口的几种方法小结
2018/05/21 Python
解决Python pandas df 写入excel 出现的问题
2018/07/04 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
python读取xlsx的方法
2018/12/25 Python
手写一个python迭代器过程详解
2019/08/27 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
python实现简单的tcp 文件下载
2020/09/16 Python
编辑硕士自荐信范文
2013/11/27 职场文书
会计主管岗位职责
2014/01/03 职场文书
三好学生演讲稿范文
2014/04/26 职场文书
银行求职信
2014/05/31 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
营销经理工作检讨书
2014/11/03 职场文书
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技