Django框架之中间件
Django中间件是一个轻量级的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。
Django中间件的定义方法:
在Django项目的settings模块中,有一个MIDDLEWARE\_CLASSES变量,Django中间件就是从这个变量中进行配置的。
Django中间件的定义方法有两种:
- 全局中间件:在settings.py中添加中间件。
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',
]
- 自定义中间件:在任意python路径下创建一个python模块,定义中间件类。
# 在任意路径下创建middleware.py文件
class MyMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
# 在中间件中可以进行一些初始化操作
def __call__(self, request):
response = self.get_response(request)
# 在响应返回前可以进行一些操作
return response
def process_request(self, request):
# 请求来的时候,第一个执行这个方法,可以用来拦截或者处理请求
pass
def process_response(self, request, response):
# 响应返回的时候,最后一个执行这个方法,可以用来处理响应
return response
然后在settings.py中添加这个自定义的中间件:
MIDDLEWARE = [
'myapp.middleware.MyMiddleware',
# ... 其他中间件
]
以上就是Django中间件的定义和使用方法。
注意:中间件的顺序很重要,中间件按照在MIDDLEWARE列表中的顺序依次执行。
Django中间件的9个方法:
- process\_request(self,request)
- process\_view(self, request, callback, callback\_args, callback\_kwargs)
- process\_template\_response(self,request,response)
- process\_exception(self, request, exception)
- process\_response(self, request, response)
- process\_render\_template(self, request, response)
- process\_url\_resolve(self, request, resolver\_match)
- process\_redirect(self, request, response)
- process\_session\_cookie(self, request, response)
以上方法的返回值可以是None或一个HttpResponse对象,如果是None,则继续按照django定义的流程继续处理,如果是HttpResponse对象,则直接将该对象返回给用户。
在实际开发中,可以根据需要重写以上的方法来实现自己的业务逻辑。
评论已关闭