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获取CPU、内存和硬盘等windowns系统信息的2个例子
Apr 15 Python
Python将多个excel文件合并为一个文件
Jan 03 Python
Django数据库表反向生成实例解析
Feb 06 Python
Python可变参数*args和**kwargs用法实例小结
Apr 27 Python
Python3实现腾讯云OCR识别
Nov 27 Python
python使用PIL实现多张图片垂直合并
Jan 15 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
Jun 21 Python
Django框架 信号调度原理解析
Sep 04 Python
python实现通过队列完成进程间的多任务功能示例
Oct 28 Python
python opencv实现gif图片分解的示例代码
Dec 13 Python
keras 简单 lstm实例(基于one-hot编码)
Jul 02 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
Jul 03 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
星际争霸秘籍
2020/03/04 星际争霸
使用php重新实现PHP脚本引擎内置函数
2007/03/06 PHP
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
2020/01/04 PHP
基于jQuery的获取标签名的代码
2012/07/16 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
Ext修改GridPanel数据和字体颜色、css属性等
2014/06/13 Javascript
jQuery选择器源码解读(二):select方法
2015/03/31 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
2016/06/12 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
详解基于Vue+Koa的pm2配置
2017/10/24 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
2019/03/01 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
JavaScript字符串转数字的简单实现方法
2020/11/27 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
Python常用库推荐
2016/12/04 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
python做反被爬保护的方法
2019/07/01 Python
PIL图像处理模块paste方法简单使用详解
2019/07/17 Python
Python 实现try重新执行
2019/12/21 Python
python计算Content-MD5并获取文件的Content-MD5值方式
2020/04/03 Python
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
德国消费电子产品购物网站:Guter Kauf
2020/09/15 全球购物
会计电算化个人自我评价
2013/11/17 职场文书
施工安全责任书范本
2014/07/24 职场文书
社区灵活就业证明
2014/11/03 职场文书
vue 数字翻牌器动态加载数据
2022/04/20 Vue.js