Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django中中间件类的顺序_Python_Django - Fatal编程技术网

Python django中中间件类的顺序

Python django中中间件类的顺序,python,django,Python,Django,这本书有这个 要激活此CSRF保护,请添加 将“django.contrib.csrf.middleware.CsrfMiddleware”添加到 在您的设置文件中设置类。这个中间件 需要在SessionMiddleware之后处理响应,因此 CsrfMiddleware必须出现在列表中SessionMiddleware之前 (因为响应中间件是从后到前处理的) 然而,它告诉我们不同 中间件\u类=( 'django.middleware.common.CommonMiddleware', “dj

这本书有这个

要激活此CSRF保护,请添加 将“django.contrib.csrf.middleware.CsrfMiddleware”添加到 在您的设置文件中设置类。这个中间件 需要在SessionMiddleware之后处理响应,因此 CsrfMiddleware必须出现在列表中SessionMiddleware之前 (因为响应中间件是从后到前处理的)

然而,它告诉我们不同

中间件\u类=( 'django.middleware.common.CommonMiddleware', “django.contrib.sessions.middleware.SessionMiddleware”, “django.middleware.csrf.CsrfViewMiddleware”, 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',)

这有点让人困惑..CsrfViewMiddleware现在是否在SessionMiddleware之后处理响应?有人能澄清一下吗?

来自Django文档:

将中间件“django.middleware.csrf.CsrfViewMiddleware”添加到 中间件类、中间件类的列表。(它应该早到 假设已处理CSRF攻击的任何视图中间件 )

资料来源:

下面是我在新生成的Django项目(1.3.1)中的中间件列表:

因此,是的,Django现在在会话中间件之后处理CSRF中间件


Django的书已经严重过时了——我现在不会把它作为学习Django的资源。另一方面,Django教程是一个极好的资源。

这在今天仍然适用吗
MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)