4

Django 带有一个内置中间件列表,但如果想要使用所有(或大部分)中间件,他必须阅读大量文档才能在 settings.py 文件中获得正确的排序。

所有内置 Django 1.1 中间件类是否有最佳默认顺序?即,复制'n'粘贴到settings.py中的东西:

MIDDLEWARE_CLASSES = (
  # perfect order here please ;-)
)

替代答案:是否有多种可能的顺序,有什么区别?

顺便说一句:顺序重要,但我只知道一些默认依赖项,例如 AuthenticationMiddleware 之前的 SessionMiddleware。

4

1 回答 1

10

他们确实有一个核心 Django 中间件的默认列表:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
)

您创建或从第三方获得的任何其他内容都可以添加到上述元组的末尾。Django书还提到,在视图请求中,顺序是从CommonMiddlewareAuthenticationMiddleware您的视图,最后到您的视图。在返回响应中,顺序从AuthenticationMiddlewareto反转CommonMiddleware。这是它的文档

回应评论:

在搜索了 Django 票之后,这似乎是 Django 开发社区的一个已知问题,我认为还没有最终答案。这是包含讨论以及 Jacob 将其关闭的部分的票。您可能想尝试再次将该问题作为 Django 票证提出,以获得官方的开发响应。

于 2009-11-30T15:05:39.353 回答