中间件

需要将中间件添加到 settings.py MIDDLEWARE_CLASSES 列表中,然后才能将其包含在执行中。Django 在创建新项目时提供的默认列表如下:

MIDDLEWARE_CLASSES = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

这些都是将按顺序在每个请求上运行的所有函数 (一次在它到达 views.py 中的视图代码之前,一次以相反的顺序进行 process_response 回调,在版本 1.10 之前)。它们执行各种操作,例如注入 Cross Site Request Forgery(csrf) 令牌。

该顺序很重要,因为如果某些中间件进行重定向,则所有后续中间件将永远不会运行。或者,如果中间件期望 csrf 令牌存在,则必须在 CsrfViewMiddleware 之后运行。