python - Django - 应用程序特定的中间件

标签 python django django-settings django-middleware

我知道以下添加中间件的方法 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/

相关文章:

python - 迭代给定模块中给定类的子类

python - 如何使用 Pandas 中另一列的长度作为切片参数

python - 大脑卡在重载上,我怎样才能像Pythonista一样做到这一点?

json - ReactJS 和 django 表单

python - 尝试使用 seek() 获取 csv 文件的最后一行时出现 AttributeError

python - Django:属性和查询集注释之间的重复逻辑

python - 使用 django-filters 设置初始值?

python - 从外部源更改 Django 的设置

Django: "collectstatic"也应该收集媒体文件吗?

DJANGO_SETTINGS_MODULE 未命名模块