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操作时间和日期之asctime()方法的使用
May 22 Python
Python实现识别手写数字大纲
Jan 29 Python
Python3多目标赋值及共享引用注意事项
May 27 Python
django2笔记之路由path语法的实现
Jul 17 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
Nov 07 Python
python二元表达式用法
Dec 04 Python
python 利用已有Ner模型进行数据清洗合并代码
Dec 24 Python
Python图片处理模块PIL操作方法(pillow)
Apr 07 Python
Python flask框架如何显示图像到web页面
Jun 03 Python
神经网络训练采用gpu设置的方式
Mar 03 Python
python tkinter实现定时关机
Apr 21 Python
如何用 Python 子进程关闭 Excel 自动化中的弹窗
May 07 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脚本数据库功能详解(中)
2006/10/09 PHP
escape unescape的php下的实现方法
2007/04/27 PHP
PHP句法规则详解 入门学习
2011/11/09 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
php判断并删除空目录及空子目录的方法
2015/02/11 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
angular.element方法汇总
2015/01/07 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
vue+Java后端进行调试时解决跨域问题的方式
2017/10/19 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
微信小程序实现底部导航
2018/11/05 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
2019/06/04 jQuery
重置Redux的状态数据的方法实现
2019/11/18 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
Python 类与元类的深度挖掘 II【经验】
2016/05/06 Python
利用信号如何监控Django模型对象字段值的变化详解
2017/11/27 Python
python机器学习之贝叶斯分类
2018/03/26 Python
对python模块中多个类的用法详解
2019/01/10 Python
python实现点击按钮修改数据的方法
2019/07/17 Python
python实现的发邮件功能示例
2019/09/11 Python
python创建n行m列数组示例
2019/12/02 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
超市创业计划书
2014/04/24 职场文书
讲文明树新风演讲稿
2014/05/12 职场文书
学雷锋倡议书
2015/01/19 职场文书
环卫处个人工作总结
2015/03/04 职场文书
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
Redis源码阅读:Redis字符串SDS详解
2021/07/15 Redis
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle