为响应行为实现 Django 中间件
Implement Django middleware for response behaviour
我对官方 django 文档中的中间件描述有点困惑,似乎无法理解它。
在实现基于 class 的中间件时,它看起来像这样(例如来自文档):
class SimpleMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
return response
请求和响应都会调用中间件。这是我的第一个问题:
如何根据处理的是请求还是响应来实现不同的行为?
此外,这是相关的,我有点困惑,因为似乎还有一种旧的不推荐使用的编写中间件的方式,可以覆盖方法 process.request()
和 process_response()
.我不确定现在这种编写中间件的方式是否可取。通常,Django 文档很准确,但这部分(对我来说)有点混乱。
有人可以帮我解决这个问题吗?
基本上responses = self.get_response(request)
之前的代码应该处理请求。 self.get_response()
将从视图中获取响应,之后的代码应该处理响应。最后,您需要 return 函数的响应。这是一个可视化:
class SimpleMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# Codes here will process the request
# -----------------------------------
response = self.get_response(request)
# -----------------------------------
# Codes here will process the response
return response
我对官方 django 文档中的中间件描述有点困惑,似乎无法理解它。
在实现基于 class 的中间件时,它看起来像这样(例如来自文档):
class SimpleMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
return response
请求和响应都会调用中间件。这是我的第一个问题:
如何根据处理的是请求还是响应来实现不同的行为?
此外,这是相关的,我有点困惑,因为似乎还有一种旧的不推荐使用的编写中间件的方式,可以覆盖方法 process.request()
和 process_response()
.我不确定现在这种编写中间件的方式是否可取。通常,Django 文档很准确,但这部分(对我来说)有点混乱。
有人可以帮我解决这个问题吗?
基本上responses = self.get_response(request)
之前的代码应该处理请求。 self.get_response()
将从视图中获取响应,之后的代码应该处理响应。最后,您需要 return 函数的响应。这是一个可视化:
class SimpleMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# Codes here will process the request
# -----------------------------------
response = self.get_response(request)
# -----------------------------------
# Codes here will process the response
return response