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之关于类的初步认识
Oct 11 Python
利用Python和OpenCV库将URL转换为OpenCV格式的方法
Mar 27 Python
wxPython使用系统剪切板的方法
Jun 16 Python
Python删除空文件和空文件夹的方法
Jul 14 Python
Python MySQL数据库连接池组件pymysqlpool详解
Jul 07 Python
python实现将excel文件转化成CSV格式
Mar 22 Python
Python正则表达式和元字符详解
Nov 29 Python
python3文件复制、延迟文件复制任务的实现方法
Sep 02 Python
Python二元赋值实用技巧解析
Oct 25 Python
Python获取对象属性的几种方式小结
Mar 12 Python
Python之变量类型和if判断方式
May 05 Python
Python selenium模拟手动操作实现无人值守刷积分功能
May 13 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
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
php图片上传类 附调用方法
2016/05/15 PHP
Javascript 继承机制实例
2009/08/12 Javascript
javascript oop开发滑动(slide)菜单控件
2010/08/25 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
Jquery 表单验证类介绍与实例
2013/06/09 Javascript
js创建对象的方式总结
2015/01/10 Javascript
浅谈javascript中的instanceof和typeof
2015/02/27 Javascript
浅谈Node.js中的定时器
2015/06/18 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
2016/03/01 Javascript
微信JS-SDK选取手机照片上传功能
2017/04/21 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
python实现提取百度搜索结果的方法
2015/05/19 Python
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
python实现简单爬虫功能的示例
2016/10/24 Python
python实现数据图表
2017/07/29 Python
windows下安装Python的XlsxWriter模块方法
2018/05/03 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
Python wxPython库消息对话框MessageDialog用法示例
2018/09/03 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
pytorch实现CNN卷积神经网络
2020/02/19 Python
python实现简单猜单词游戏
2020/12/24 Python
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
英国手机壳购买网站:Case Hut
2019/04/11 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
2014年元旦活动方案
2014/02/15 职场文书
公司承诺书范文
2014/05/19 职场文书
幼师个人总结范文
2015/02/28 职场文书
关于python爬虫应用urllib库作用分析
2021/09/04 Python