gpt4 book ai didi

django - __init__() 缺少 1 个必需的位置参数 : 'get_response'

转载 作者:行者123 更新时间:2023-12-01 21:56:42 25 4
gpt4 key购买 nike

我使用 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

我试图解决这个问题:

class TenantMiddleware:
def process_response(self, request, response):
set_tenant_schema_for_request(request)
return response

这是使用"new"中间件样式的正确等价物吗?

最佳答案

你的第一个例子是新式中间件的例子,第二个是旧式中间件的例子。如果你仍然想在新式中间件中使用 process_response(request, response) 你应该使用 django.utils.deprecation.MiddlewareMixin 类,作为你的中间件的父类类。

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

如果你使用新型中间件,,,

# 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.

在新型中间件中,self.get_response(request)之前的代码与process_request(request)相同,self.get_response(request)之后的代码process_response(request, response) 相同。

希望对你有帮助。

关于django - __init__() 缺少 1 个必需的位置参数 : 'get_response' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56496132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com