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 相关文章推荐
在MAC上搭建python数据分析开发环境
Jan 26 Python
Python中对象迭代与反迭代的技巧总结
Sep 17 Python
python简单线程和协程学习心得(分享)
Jun 14 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
Jun 30 Python
Python从单元素字典中获取key和value的实例
Dec 31 Python
python实现维吉尼亚加密法
Mar 20 Python
Django中多种重定向方法使用详解
Jul 17 Python
python实现低通滤波器代码
Feb 26 Python
Django media static外部访问Django中的图片设置教程
Apr 07 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
Apr 17 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
Jun 27 Python
python zip()函数的使用示例
Sep 23 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数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
2011/10/31 PHP
php使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
PHP中的print_r 与 var_dump 输出数组
2016/06/13 PHP
javascript下过滤数组重复值的代码
2007/09/10 Javascript
Javascript 中的 && 和 || 使用小结
2010/04/25 Javascript
利用JS自动打开页面上链接的实现代码
2011/09/25 Javascript
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
2013/08/09 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
2016/04/17 Javascript
javascript实现简单的可随机变色网页计算器示例
2016/12/30 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
JS防抖和节流实例解析
2019/09/24 Javascript
python设置windows桌面壁纸的实现代码
2013/01/28 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
如何在django里上传csv文件并进行入库处理的方法
2019/01/02 Python
python基于递归解决背包问题详解
2019/07/03 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
pytorch:torch.mm()和torch.matmul()的使用
2019/12/27 Python
python如何删除文件、目录
2020/06/23 Python
python Xpath语法的使用
2020/11/26 Python
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
《值日生》教学反思
2014/02/17 职场文书
2014年初三班主任工作总结
2014/12/05 职场文书
感恩节寄语2015
2015/03/24 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
董事长开业致辞
2015/07/29 职场文书
《女娲补天》教学反思
2016/02/20 职场文书
女性励志书籍推荐
2019/08/19 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
python的netCDF4批量处理NC格式文件的操作方法
2022/03/21 Python