我知道以下添加中间件的方法 1)使用MIDDLEWARE_CLASSES向django添加自定义中间件组件
MIDDLEWARE_CLASSES = (
'......'
'path.to.custom.middlware',)
2) 使用 decorate_from_middlware 添加 View 特定中间件
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 或任何其他方法来做到这一点。或者第二种方法是唯一的方法并将所有中间件类分别添加到 View 中?
更新: http://python-social-auth.readthedocs.org/en/latest/pipeline.html 与 about 应用程序一样,SOCIAL_AUTH_PIPELINE 仅适用于社交应用程序。这与全局项目设置不同..
提前致谢
最佳答案
这可能无法按照您想要的方式实现,因为 django 不会跟踪哪个 View 来自哪个应用程序。但是您可以在 process_view
中创建一些带有条件的中间件,您可以在此处检查正在调用哪个 View ,并在 View 符合您的条件时执行某些操作(在这种情况下, View 来自特定应用程序)。
如果您使用基于类的 View ,另一种方法是在应用程序中创建一些 View 混合或基本 View ,用中间件装饰它并在应用程序的每个 View 中使用它。
关于python - Django - 应用程序特定的中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33604742/