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 urllib爬取百度云连接的实例代码
Jun 19 Python
解决python爬虫中有中文的url问题
May 11 Python
Python实现简单的文本相似度分析操作详解
Jun 16 Python
Flask之flask-session的具体使用
Jul 26 Python
Python3分析处理声音数据的例子
Aug 27 Python
Python实现非正太分布的异常值检测方式
Dec 09 Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 Python
Tensorflow训练模型越来越慢的2种解决方案
Feb 07 Python
python 解决Windows平台上路径有空格的问题
Nov 10 Python
python的setattr函数实例用法
Dec 16 Python
Python 中Operator模块的使用
Jan 30 Python
Python xlwings插入Excel图片的实现方法
Feb 26 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
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
2014/06/22 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
浅析document.createDocumentFragment()与js效率
2013/07/08 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
2015/03/05 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
js+div实现文字滚动和图片切换效果代码
2015/08/27 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
jquery实现二级导航下拉菜单效果
2015/12/18 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
2019/11/07 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python中使用不同编码读写txt文件详解
2015/05/28 Python
详解python进行mp3格式判断
2016/12/23 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
2016/12/23 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
Flask框架学习笔记之使用Flask实现表单开发详解
2019/08/12 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
pytorch 实现cross entropy损失函数计算方式
2020/01/02 Python
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
allbeauty美国:英国在线美容店
2019/03/11 全球购物
运动会入场词60字
2014/02/15 职场文书
超市开学活动方案
2014/03/01 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
土地租赁意向书
2014/07/30 职场文书
Win11怎么启动任务管理器?Win11启动任务管理器的几种方法
2021/11/23 数码科技