【问题标题】:Django - application specific middlewareDjango - 特定于应用程序的中间件
【发布时间】:2016-02-09 20:09:52
【问题描述】:

我知道以下添加中间件的方法 1) 使用MIDDLEWARE_CLASSES向django添加自定义中间件组件

MIDDLEWARE_CLASSES = (
     '......'
    'path.to.custom.middlware',)

2) 使用decorate_from_middlware添加特定于视图的中间件

cache_page = decorator_from_middleware(CacheMiddleware)

@cache_page(3600)
def my_view(request):
    pass

我的要求是如何创建应用程序特定的中间件类,如

APPSPECIFIC_MIDDLEWARE_CLASSES = ( 'path.to.middlwareclass1',
 'path.to.middlwareclass2',
 'path.to.middlwareclass3', )

middlwareclass 是函数还是类? 有没有使用 url 或任何其他方法来做到这一点,。或者第二种方法是唯一的方法并将所有中间件类分别添加到视图中?

更新: http://python-social-auth.readthedocs.org/en/latest/pipeline.html 与 about 应用程序一样,SOCIAL_AUTH_PIPELINE 仅适用于社交应用程序。这与全局项目设置不同..

提前致谢

【问题讨论】:

标签: python django django-settings django-middleware


【解决方案1】:

这可能无法以您想要的方式实现,因为 django 不会跟踪来自哪个应用程序的视图。但是您可以在process_view 中创建一些带有条件的中间件,您可以在此处检查正在调用的视图并在视图符合您的条件时执行某些操作(在这种情况下,视图来自特定的应用程序)。

如果您使用基于类的视图,另一种方法是在您的应用程序中创建一些视图混合或基本视图,用您的中间件装饰它并在您的应用程序的每个视图中使用它。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-26
  • 2016-05-14
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多