Python Django中间件,中间件函数,全局异常处理操作示例


Posted in Python onNovember 08, 2019

本文实例讲述了Python Django中间件,中间件函数,全局异常处理操作。分享给大家供大家参考,具体如下:

应用名/middleware.py(定义中间件类,中间件函数。文件名可以任意):

from django.http import HttpResponse
# 定义中间件类。 (类名可以任意,但类中的方法名是固定的)
class TestMiddleware(object):
  '''中间件类'''
  def __init__(self):
    '''服务器重启之后,接收第一个请求时调用(只会调用一次)'''
    print('----init----')
  # 中间件函数。(用到哪个函数写哪个,不需要全写)
  def process_request(self, request):
    '''产生request对象之后,url匹配之前调用'''
    print('----process_request----')
    # return HttpResponse('process_request') # 默认放行,不拦截请求。
  def process_view(self, request, view_func, *view_args, **view_kwargs):
    '''url匹配之后,视图函数调用之前调用'''
    print('----process_view----')
    # view_func: url匹配到的视图函数。
    return HttpResponse('process_view') # return HttpResponse对象,表示拦截,直接执行process_response函数。
  def process_response(self, request, response):
    '''视图函数调用之后,response返回浏览器之前'''
    print('----process_response----')
    return response # 一般会返回响应。
# 定义中间件类,处理全局异常
class ExceptionTestMiddleware(object):
  # 如果注册多个process_exception函数,那么函数的执行顺序与注册的顺序相反。(其他中间件函数与注册顺序一致)
  # 中间件函数,用到哪个就写哪个,不需要写所有的中间件函数。
  def process_exception(self, request, exception):
    '''视图函数发生异常时调用'''
    print('----process_exception1----')
    print(exception)

项目名/settings.py(项目配置,注册中间件类):

MIDDLEWARE_CLASSES = (
  'django.contrib.sessions.middleware.SessionMiddleware',
  'django.middleware.common.CommonMiddleware',
  'django.middleware.csrf.CsrfViewMiddleware',
  'django.contrib.auth.middleware.AuthenticationMiddleware',
  'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
  'django.contrib.messages.middleware.MessageMiddleware',
  'django.middleware.clickjacking.XFrameOptionsMiddleware',
  'django.middleware.security.SecurityMiddleware',
  'booktest.middleware.TestMiddleware',  # 注册中间件类 (中间件类所在py文件路径.类名)
  'booktest.middleware.ExceptionTestMiddleware',
  # 如果注册多个process_exception函数,那么函数的执行顺序与注册的顺序相反。
)

Python Django中间件,中间件函数,全局异常处理操作示例

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
python正则表达式修复网站文章字体不统一的解决方法
Feb 21 Python
详解Django框架中的视图级缓存
Jul 23 Python
简介Django中内置的一些中间件
Jul 24 Python
Python实现查找匹配项作处理后再替换回去的方法
Jun 10 Python
Python基于socket实现简单的即时通讯功能示例
Jan 16 Python
python获取网页中所有图片并筛选指定分辨率的方法
Mar 31 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
Feb 21 Python
Python3中编码与解码之Unicode与bytes的讲解
Feb 28 Python
Python----数据预处理代码实例
Mar 20 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
Jul 11 Python
python 实现二维列表转置
Dec 02 Python
Python改变对象的字符串显示的方法
Aug 01 Python
Django框架下静态模板的继承操作示例
Nov 08 #Python
python中自带的三个装饰器的实现
Nov 08 #Python
python反转列表的三种方式解析
Nov 08 #Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
Nov 08 #Python
Python通过递归获取目录下指定文件代码实例
Nov 07 #Python
Django REST framework 单元测试实例解析
Nov 07 #Python
浅谈python中统计计数的几种方法和Counter详解
Nov 07 #Python
You might like
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
2015/10/10 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
2017/11/07 PHP
PHP Class SoapClient not found解决方法
2018/01/20 PHP
php redis setnx分布式锁简单原理解析
2020/10/23 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
javascript背投广告代码的完善
2008/04/08 Javascript
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
深入理解Javascript中的valueOf与toString
2017/01/04 Javascript
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
layui之select的option叠加问题的解决方法
2018/03/08 Javascript
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
2020/04/09 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
python机器学习之神经网络(一)
2017/12/20 Python
Python实现的径向基(RBF)神经网络示例
2018/02/06 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
Python中一些深不见底的“坑”
2019/06/12 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
2020/06/22 Python
pycharm实现猜数游戏
2020/12/07 Python
纽约21世纪百货官网:Century 21
2016/08/27 全球购物
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
Tostadora意大利:定制T恤
2019/04/08 全球购物
Linux文件操作命令都有哪些
2015/02/27 面试题
介绍一下linux的文件权限
2014/07/20 面试题
计算机软件个人的自荐信范文
2013/12/01 职场文书
公司授权委托书范文
2014/09/21 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
正确的理解和使用Django信号(Signals)
2021/04/14 Python