Django 1.10:"新风格"中间件相当于`process_request()`

con*_*xyz 4 django django-middleware python-2.7

如何创建"新风格"中间件,它实现了使用process_request()带有"旧样式" 的钩子的等效实现?

我已经process_request()使用MiddlewareMixin... 修改了1.10之前的中间件

from django.utils.deprecation import MiddlewareMixin

class MyCustomMiddleware(MiddlewareMixin):

    def process_request(self, request):
        # My request logic
        return response
Run Code Online (Sandbox Code Playgroud)

我想知道如何做一个"纯粹的"> 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
Run Code Online (Sandbox Code Playgroud)

谢谢.

nac*_*pro 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
Run Code Online (Sandbox Code Playgroud)

现在,您可以从您的视图中获取每个请求中的时间戳!(只是一个例子)