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 相关文章推荐
windows系统中python使用rar命令压缩多个文件夹示例
May 06 Python
Python中的rjust()方法使用详解
May 19 Python
深入理解Python中的*重复运算符
Oct 28 Python
PyCharm 常用快捷键和设置方法
Dec 20 Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 Python
Python中zip()函数的简单用法举例
Sep 02 Python
TensorFlow保存TensorBoard图像操作
Jun 23 Python
python判断变量是否为列表的方法
Sep 17 Python
Python ConfigParser模块的使用示例
Oct 12 Python
Python+unittest+requests+excel实现接口自动化测试框架
Dec 23 Python
TensorFlow低版本代码自动升级为1.0版本
Feb 20 Python
python快速安装OpenCV的步骤记录
Feb 22 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/10/08 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
php处理复杂xml数据示例
2016/07/11 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
JavaScript实现统计文本框Textarea字数增强用户体验
2012/12/21 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
2013/04/07 Javascript
js css后面所带参数含义介绍
2013/08/18 Javascript
jquery动态增加删除表格行的小例子
2013/11/14 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
原生js实现jquery函数animate()动画效果的简单实例
2016/08/21 Javascript
Nodejs下用submit提交表单提示cannot post错误的解决方法
2016/11/21 NodeJs
js的OOP继承实现(必看篇)
2017/02/18 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
详解如何webpack使用DllPlugin
2018/09/30 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
2018/01/11 Python
python实现壁纸批量下载代码实例
2018/01/25 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
Pytorch中.new()的作用详解
2020/02/18 Python
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
美国女性服饰销售网站:Nasty Gal(坏女孩)
2016/07/26 全球购物
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
先进个人事迹材料范文
2014/12/30 职场文书
离婚协议书范文2015
2015/01/26 职场文书
Pytorch中的数据集划分&正则化方法
2021/05/27 Python
victoriaMetrics库布隆过滤器初始化及使用详解
2022/04/05 Golang
Mysql 8.x 创建用户以及授予权限的操作记录
2022/04/18 MySQL