如何创造"新风格"中间件,它实现了使用process_request()
钩子与#34;旧样式"相同的实现?
我已经使用process_request()
改编了1.10版中间件MiddlewareMixin
...
from django.utils.deprecation import MiddlewareMixin
class MyCustomMiddleware(MiddlewareMixin):
def process_request(self, request):
# My request logic
return response
我想知道如何做一个纯粹的" > 1.9"新款"实现。我尝试通过实现__init__()
和__call__()
这样做而没有运气:
class MyCustomMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# My request logic
return response
感谢。
答案 0 :(得分:13)
这是一个例子......
class TimeStampMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
request.timestamp = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S')
response = self.get_response(request)
return response
现在,您可以从您的视图中获取每个请求中的时间戳! (只是一个例子)