我已经定义了一个中间件类def bla(v):
return "in bla: " + v
d = {'func': bla}
print(d.get('func')('something')) # in bla: something
,并在XYZMiddleware
中注册了它。
settings.MIDDLEWARE
个对象具有相关状态,因此在我的集成测试中,我需要访问Django(从1.11开始)创建的XYZMiddleware
对象。
如何检索它? (文档似乎没有谈论它,topic docs和reference docs。
答案 0 :(得分:0)
中间件已在BaseHandler.load_middleware
(django.core.handlers.base
)中加载并注册。该代码看起来并不意味着可以访问中间件对象。
再看一下中间件文档,
我找到了以下remark about __init__
:
与每个请求调用一次的
__call__()
方法不同,
当Web服务器启动时,__init__()
仅被调用一次。
强调原作。 这对我来说听起来好像只存在一个中间件类的实例。所以正确的解决方案应该是改变状态 从实例变量到类变量。