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 相关文章推荐
使用wxpython实现的一个简单图片浏览器实例
Jul 10 Python
ubuntu系统下 python链接mysql数据库的方法
Jan 09 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
Nov 30 Python
python中多个装饰器的调用顺序详解
Jul 16 Python
python实现静态web服务器
Sep 03 Python
python使用 cx_Oracle 模块进行查询操作示例
Nov 28 Python
pyqt5数据库使用详细教程(打包解决方案)
Mar 25 Python
python 将列表里的字典元素合并为一个字典实例
Sep 01 Python
Python requests上传文件实现步骤
Sep 15 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
Dec 31 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 Python
OpenCV绘制圆端矩形的示例代码
Aug 30 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
PHP面向对象概念
2011/11/06 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
为javascript添加String.Format方法
2020/08/11 Javascript
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
获取客户端网卡MAC地址和IP地址实现JS代码
2013/03/17 Javascript
js实现瀑布流的一种简单方法实例分享
2013/11/04 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
jQuery自定义添加"$"与解决"$"冲突的方法
2015/01/19 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
JS实现数组简单去重及数组根据对象中的元素去重操作示例
2018/01/05 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
python刷投票的脚本实现代码
2014/11/08 Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
Python3单行定义多个变量或赋值方法
2018/07/12 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
python 图像的离散傅立叶变换实例
2020/01/02 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
CSS3文本换行word-wrap解决英文文本超过固定宽度不换行
2013/10/10 HTML / CSS
工业学校毕业生自荐书
2014/01/03 职场文书
打架检讨书100字
2014/01/08 职场文书
歌唱比赛获奖感言
2014/01/21 职场文书
《窗前的气球》教学反思
2014/04/07 职场文书
委托书范本
2014/09/13 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
导游词之永泰公主墓
2019/12/04 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python
如何使用PostgreSQL进行中文全文检索
2021/05/27 PostgreSQL
Python代码风格与编程习惯重要吗?
2021/06/03 Python