下面就是“Python Django中间件详细介绍”的完整攻略,包含两条示例说明:
介绍
Django中间件(Middleware)是一个可以介入Django请求/响应处理过程的实现机制。通过中间件,用户可以干预Django的request/response处理流程,修改request/response响应的方式和内容。
Django中间件可以方便的实现以下功能:
- 对请求和响应(包括Http请求和WSGI请求)做纠正,过滤、记录,转发、限制等操作;
- 在响应前做一些处理,如压缩、加密、设置header等;
- 对View请求前后进行操作。
安装
Django中间件不需要特别安装,只需在项目的settings.py中进行配置即可。
在MIDDLEWARE_CLASSES中添加你的中间件即可,如:
MIDDLEWARE_CLASSES = [
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'myapp.middleware.MyMiddleware',
]
编写中间件
编写一个Django中间件需要继承中间件中提供的基类,包含以下方法:
__init__(self, get_response)
初始化方法,其中get_response参数是Django视图函数的回调函数。
__call__(self, request)
处理请求和返回响应的方法,其中request参数是Django的HttpRequest对象,返回值是HttpResponse对象。
process_request(self, request)
在路由处理之前调用。
process_view(self, request, view_func, view_args, view_kwargs)
在路由之后和View之前调用。
process_response(self, request, response)
在View之后呈现模板之前调用。
process_exception(self, request, exception)
当一个View抛出异常时调用。
示例1:
class MyMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# 修改请求
request.url = '/'
# 处理响应
response = self.get_response(request)
# 修改响应
response['X-My-Header'] = 'hello world'
return response
示例2:
class SimpleMiddleware(object):
def __init__(self, get_response=None):
self.get_response = get_response
def __call__(self, request):
# 处理请求
print('Middleware Before Request')
response = self.get_response(request)
# 处理响应
print('Middleware After Response')
return response
配置
使用中间件需要在settings.py中进行配置。
语法:MIDDLEWARE_CLASSES = (中间件类路径)
。
示例:
MIDDLEWARE_CLASSES += ('a.middleware.SimpleMiddleware',)
可以查看数据,如下:
MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'a.middleware.SimpleMiddleware',
]
以上就是Python Django中间件的详细介绍,包含两条示例说明,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Django中间件详细介绍 - Python技术站