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 相关文章推荐
简单介绍利用TK在Python下进行GUI编程的教程
Apr 13 Python
Python中SOAP项目的介绍及其在web开发中的应用
Apr 14 Python
Python脚本在Appium库上对移动应用实现自动化测试
Apr 17 Python
深入解析Python中函数的参数与作用域
Mar 20 Python
Python利用ElementTree模块处理XML的方法详解
Aug 31 Python
python 读取目录下csv文件并绘制曲线v111的方法
Jul 06 Python
python 读取文本文件的行数据,文件.splitlines()的方法
Jul 12 Python
Python subprocess库的使用详解
Oct 26 Python
解决Django中调用keras的模型出现的问题
Aug 07 Python
对Python中一维向量和一维向量转置相乘的方法详解
Aug 26 Python
pyspark对Mysql数据库进行读写的实现
Dec 30 Python
Python Pandas解析读写 CSV 文件
Apr 11 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
php5 and xml示例
2006/11/22 PHP
php利用cookies实现购物车的方法
2014/12/10 PHP
PHP实现从远程下载文件的方法
2015/03/12 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
jquery自定义右键菜单、全选、不连续选择
2016/03/01 Javascript
JavaScript中数组Array.sort()排序方法详解
2017/03/01 Javascript
详解layui弹窗父子窗口之间传参数的方法
2018/01/16 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
2019/11/20 Javascript
[01:01:18]VP vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
Python Django 简单分页的实现代码解析
2019/08/21 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
2020/02/20 Python
Python读取Excel数据并生成图表过程解析
2020/06/18 Python
Python timeit模块原理及使用方法
2020/10/10 Python
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
小学生学习雷锋倡议书
2014/05/15 职场文书
共产党员公开承诺践诺书
2014/05/28 职场文书
分公司经理任命书
2014/06/05 职场文书
医院党员公开承诺书
2014/08/30 职场文书
软弱涣散基层党组织整改方案
2014/10/25 职场文书
团员个人年度总结
2015/02/26 职场文书
2015年工商所工作总结
2015/05/21 职场文书
三八妇女节致辞
2015/07/31 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle