赞
踩
Django官方文档中对于Middleware的介绍:
中间件(Middleware)是一个镶嵌到django的request/response处理机制中的一个钩子(hooks) 框架。它是一个可以修改django全局输入或输出的一个底层插件系统。
如果你想修改请求,例如被传送到view中的HttpRequest对象。 或者你想修改view返回的HttpResponse对象,这些都可以通过中间件来实现。
中间件(Middleware)在整个Django的request/response处理机制中的角色如下所示:
HttpRequest -> Middleware -> View -> Middleware -> HttpResponse
总结:中间件允许您在一个浏览器的请求在到达Django视图之前处理它,以及在视图返回的响应到达浏览器之前处理这个响应。
我们可以编写自己的中间件实现权限校验,限制用户请求、打印日志、改变输出内容等多种应用场景,比如:
当你创建一个新django项目时,你会发现settings.py里已经注册了一些Django自带的中间件,每个中间件都负责一个特定的功能。
MIDDLEWARE = [
'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',
]
注意:从Django 1.10起, settings.py里注册中间件使用MIDDLEWARE=,而不是MIDDLEWARE_CLASSES= 。
在 Django 中,这两种中间件类有以下区别:
class MyMiddleware(MiddlewareMixin):
class MyMiddleware(MiddlewareMixin):
def process_request(self, request):
print(‘Process request’)
class SimpleMiddleware(object):
例如:
class SimpleMiddleware(object):
def
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。