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实现的检测网站挂马程序
Nov 30 Python
Python序列之list和tuple常用方法以及注意事项
Jan 09 Python
用Python制作检测Linux运行信息的工具的教程
Apr 01 Python
ansible作为python模块库使用的方法实例
Jan 17 Python
深入理解python中sort()与sorted()的区别
Aug 29 Python
python自动化生成IOS的图标
Nov 13 Python
Python docx库用法示例分析
Feb 16 Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 Python
Python 实现opencv所使用的图片格式与 base64 转换
Jan 09 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
Python使用os.listdir和os.walk获取文件路径
May 21 Python
python 如何利用argparse解析命令行参数
Sep 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
天津市收音机工业发展史
2021/03/04 无线电
PHP数据库操作面向对象的优点
2006/10/09 PHP
一个简单计数器的源代码
2006/10/09 PHP
记录PHP错误日志 display_errors与log_errors的区别
2012/10/09 PHP
用mysql_fetch_array()获取当前行数据的方法详解
2013/06/05 PHP
thinkphp的dump函数无输出实例代码
2016/11/15 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
2017/06/13 PHP
获取客户端电脑日期时间js代码(jquery)
2012/09/12 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
详解jQuery简单的表格应用
2016/12/16 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
javascript获取图片的top N主色值方法详解
2018/01/26 Javascript
Angular6 用户自定义标签开发的实现方法
2019/01/08 Javascript
vue+express+jwt持久化登录的方法
2019/06/14 Javascript
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
python3实现基于用户的协同过滤
2018/05/31 Python
python 把列表转化为字符串的方法
2018/10/23 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
2019/05/28 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
Canvas与图片压缩的示例代码
2017/11/28 HTML / CSS
研究生自荐信
2013/10/09 职场文书
房地产管理毕业生自荐信
2013/11/04 职场文书
机电专业毕业生推荐信
2013/11/10 职场文书
法人授权委托书范本
2014/04/04 职场文书
《蜗牛的奖杯》教后反思
2014/04/24 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
quickjs 封装 JavaScript 沙箱详情
2021/11/02 Javascript
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers