访问已注册的Django MIDDLEWARE对象

时间:2018-04-11 07:23:32

标签: django

我已经定义了一个中间件类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 docsreference docs

1 个答案:

答案 0 :(得分:0)

中间件已在BaseHandler.load_middlewaredjango.core.handlers.base)中加载并注册。该代码看起来并不意味着可以访问中间件对象。

再看一下中间件文档, 我找到了以下remark about __init__

  

与每个请求调用一次的__call__()方法不同,
  当Web服务器启动时,__init__()仅被调用一次

强调原作。 这对我来说听起来好像只存在一个中间件类的实例。所以正确的解决方案应该是改变状态 从实例变量到类变量。