Python Django中间件,中间件函数,全局异常处理操作示例
作者:houyanhua1 发布时间:2022-02-18 20:21:40
标签:Python,Django,中间件,全局异常处理
本文实例讲述了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函数,那么函数的执行顺序与注册的顺序相反。
)
希望本文所述对大家基于Django框架的Python程序设计有所帮助。
来源:https://blog.csdn.net/houyanhua1/article/details/85028983


猜你喜欢
- 前言我们经常需要将大量数据保存起来以备后续使用,数据库是一个很好的解决方案。在众多数据库中,MySQL数据库算是入门比较简单、语法比较简单,
- 我们假设TPCoins的发起人最初向已知客户 Dinesh 发出500个TPCoins.为此,他首先创建一个Dinesh
- 各人觉得这些LOGO的设计都很好,简洁,明了,大方。特整理出来与大家分享,希望能吸取设计经验。asp之家祝愿各位09年身体健康,万事如意,网
- 不同数据库之间若不能导入导出,那么将是一件可怕的事情,所幸的是一般情况下通过不同的方法和途径,都可以实现,方法有多种,本人提供其中的一个,提
- 用过vuex的肯定会有这样一个痛点,就是刷新以后vuex里面存储的state就会被浏览器释放掉,因为我们的state都是存储在内存中的。所以
- 这两天终于忍不住的去实验了一下,为什么网页的字体有时会显示成超级无敌难看的宋体呢?其实宋体不难看,难看的只是把它放在Leopard下,没有点
- 1、先介绍如何用PHP连上数据库(数据库用户名“root”,密码“sun”,有库“myguestbook”) 图62、PHP和My
- 导言在前面三节的示例中,GridView和DetailsView控件使用的是绑定列和CheckBoxField(绑定GridView和Det
- 1 图像形态学运算在Python OpenCV图像处理之图像滤波特效详解中我们将图像滤波进行了以下分类:邻域滤波线性滤波非线性滤波频域滤波低
- 下面通过图文并茂的方式展示如下:一、SQL Profiler 事件类 Stored Procedures\RPC:Complete
- 本文主要介绍了一个获取SQL Server数据字典的经典SQL语句,大家可以根据各自的实际情况对这段语句进行相应的修改。SELECT sys
- 在计算机中数据有两种特征:类型和长度。所谓数据类型就是以数据的表现方式和存储方式来划分的数据的种类。在SQL Server 中每个变量、参数
- 本文实例为大家分享了python自动发送邮件的具体代码,供大家参考,具体内容如下#coding=utf8 ''&
- Erase语句:重新初始化固定数组的元素,并释放动态数组的存储空间。用法: Era
- logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等。其主
- 今天给大家分享的主题是用百度的接口实现图片的文字识别。1.环境和配置要求整体是用Python实现,所需要使用的第三方库包括aip、PIL、k
- Vue中内置了很多的指令,如v-model、v-show、v-html等,但是有时候这些指令并不能满足我们,或者说我们想为元素附加一些特别的
- 一、设置环境在 Ubuntu 机器上安装 SQL Server 2017和安装运行 GoLang 所需的依赖项。1.1、安装 SQL Ser
- 最近接了一个比较简单的图像处理的单子,花了一点时间随便
- 本文实例为大家分享了python实现固定尺寸图像拼接,供大家参考,具体内容如下讲解1、代码效果:固定尺寸图像拼接代码import osimp