我使用 Django 1.11 并收到此错误
class TenantMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
set_tenant_schema_for_request(request)
response = self.get_response(request)
return response
Run Code Online (Sandbox Code Playgroud)
我试图解决这个问题:
class TenantMiddleware:
def process_response(self, request, response):
set_tenant_schema_for_request(request)
return response
Run Code Online (Sandbox Code Playgroud)
这是使用“新”中间件风格的正确等价物吗?
您的第一个示例是新型中间件的示例,第二个示例是旧式中间件的示例。如果你仍然想process_response(request, response)在新式中间件中使用django.utils.deprecation.MiddlewareMixin,你应该使用class,作为你的中间件类的父类。
from django.utils.deprecation import MiddlewareMixin
# old-style middleware usage in new versions of django
class TenantMiddleware(MiddlewareMixin):
def process_response(self, request, response):
set_tenant_schema_for_request(request)
return response
Run Code Online (Sandbox Code Playgroud)
如果您使用新型中间件,,,
# new-style middleware usage and explanation
class TenantMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# implement process_request(request) logic here
response = self.get_response(request)
# implement process_response(request, response) logic here
return response # returns HttpResponse or subclasses here.
Run Code Online (Sandbox Code Playgroud)
在新型中间件,代码之前self.get_response(request)是一样的process_request(request)和代码后self.get_response(request)是一样的process_response(request, response)。
希望,对你有帮助。
| 归档时间: |
|
| 查看次数: |
881 次 |
| 最近记录: |