问题
How would one create "new style" middleware, which fulfills an equivalent implementation to using the process_request()
hook with the "old style"?
I've already adapted pre 1.10 middleware process_request()
using MiddlewareMixin
...
from django.utils.deprecation import MiddlewareMixin
class MyCustomMiddleware(MiddlewareMixin):
def process_request(self, request):
# My request logic
return response
I'd like to know how to do a "pure" >1.9 "new style" implementation. I tried doing so by implementing __init__()
and __call__()
like this without luck:
class MyCustomMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# My request logic
return response
Thanks.
回答1:
Here an example...
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
Now you can get the timestamp in every request from yours views! (is only an example)
来源:https://stackoverflow.com/questions/40876355/django-1-10-new-style-middleware-equivalent-of-process-request