玩转Django 2.0
上QQ阅读APP看书,第一时间看更新

2.5 中间件

中间件(Middleware)是处理Django的request和response对象的钩子。当用户在网站中进行单击某个按钮等操作时,这个动作是用户向网站发送请求(request);而网页会根据用户的操作返回相关的网页内容,这个过程称为响应处理(response)。从请求到响应的过程中,当Django接收到用户请求时,Django首先经过中间件处理请求信息,执行相关的处理,然后将处理结果返回给用户,中间件执行流程如图2-6所示。

图2-6 中间件执行流程

从图2-6中能清晰地看到,中间件的作用主要是处理用户请求信息。开发者也可以根据自己的开发需求自定义中间件,只要将自定义的中间件添加到配置属性MIDDLEWARE中即可激活。一般情况下,Django默认的中间件配置均可满足大部分的开发需求。在项目的MIDDLEWARE中添加LocaleMiddleware中间件,使得Django内置的功能支持中文显示,代码如下:

     MIDDLEWARE = [
         'django.middleware.security.SecurityMiddleware',
         'django.contrib.sessions.middleware.SessionMiddleware',
        # 使用中文
        'django.middleware.locale.LocaleMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
     ]

配置属性MIDDLEWARE的数据格式为列表类型,每个中间件的设置顺序是固定的,如果随意变更中间件很容易导致程序异常。每个中间件的说明如下:

• SecurityMiddleware:内置的安全机制,保护用户与网站的通信安全。

• SessionMiddleware:会话Session功能。

• LocaleMiddleware:支持中文语言。

• CommonMiddleware:处理请求信息,规范化请求内容。

• CsrfViewMiddleware:开启CSRF防护功能。

• AuthenticationMiddleware:开启内置的用户认证系统。

• MessageMiddleware:开启内置的信息提示功能。

• XFrameOptionsMiddleware:防止恶意程序点击劫持。