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实现的守护进程(Daemon)用法实例
Jun 02 Python
深度定制Python的Flask框架开发环境的一些技巧总结
Jul 12 Python
浅谈编码,解码,乱码的问题
Dec 30 Python
python中hashlib模块用法示例
Oct 30 Python
用Eclipse写python程序
Feb 10 Python
python构建深度神经网络(续)
Mar 10 Python
Python编程中类与类的关系详解
Aug 08 Python
python的等深分箱实例
Nov 22 Python
使用Python测试Ping主机IP和某端口是否开放的实例
Dec 17 Python
3分钟看懂Python后端必须知道的Django的信号机制
Jul 26 Python
浅谈python锁与死锁问题
Aug 14 Python
python 使用openpyxl读取excel数据
Feb 18 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
thinkPHP导出csv文件及用表格输出excel的方法
2015/12/30 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
2016/03/23 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
htm调用JS代码
2007/03/15 Javascript
比较详细的关于javascript中void(0)的具体含义解释
2007/08/02 Javascript
JQuery跨Iframe选择实现代码
2010/08/19 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
2015/08/27 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
Bootstrap每天必学之按钮(Button)插件
2016/04/25 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
2017/04/26 Javascript
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
jquery对table做排序操作的实例演示
2017/08/10 jQuery
微信小程序实现animation动画
2018/01/26 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
Python及Django框架生成二维码的方法分析
2018/01/31 Python
基于anaconda下强大的conda命令介绍
2018/06/11 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
python设置环境变量的作用和实例
2019/07/09 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
python找出因数与质因数的方法
2019/07/25 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
windows+vscode安装paddleOCR运行环境的步骤
2020/11/11 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
2021/02/03 Python
工商管理专业大学生职业生涯规划范文
2014/03/09 职场文书
功夫熊猫观后感
2015/06/10 职场文书
委托收款证明
2015/06/23 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书
尝试使用Python爬取城市租房信息
2022/04/12 Python