django中间件
Posted 0627zhou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django中间件相关的知识,希望对你有一定的参考价值。
1.what is 中间件?
- 是一个Python类,用来在全局范围内处理请求和响应的一个钩子.
- 它是一个轻量低级别的插件系统,用于在全局范围内改变Django的输入出。每个中间件组件都负责做一些特定的功能。
- django中的中间件是什么样子:
-
MIDDLEWARE = [ ‘django.middleware.security.SecurityMiddleware‘, ‘django.contrib.sessions.middleware.SessionMiddleware‘, ‘django.middleware.common.CommonMiddleware‘, ‘django.middleware.csrf.CsrfViewMiddleware‘, ‘django.contrib.auth.middleware.AuthenticationMiddleware‘, ‘django.contrib.messages.middleware.MessageMiddleware‘, ‘django.middleware.clickjacking.XFrameOptionsMiddleware‘, ]
2.自定义组件
- django中自带的自定义组件:
-
from django.utils.deprecation import MiddlewareMixin class CsrfViewMiddleware(MiddlewareMixin): def process_request(self, request): csrf_token = self._get_token(request) if csrf_token is not None: # Use same token next time. request.META[‘CSRF_COOKIE‘] = csrf_token
- 然后在django的配置文件settings中把上面的文件的路径添加到MIDDLEWARE中即可:
-
settings MIDDLEWARE = [ ‘django.middleware.security.SecurityMiddleware‘, ‘django.contrib.sessions.middleware.SessionMiddleware‘, ‘django.middleware.common.CommonMiddleware‘, ‘django.middleware.csrf.CsrfViewMiddleware‘, ‘django.contrib.auth.middleware.AuthenticationMiddleware‘, ‘django.contrib.messages.middleware.MessageMiddleware‘, ‘django.middleware.clickjacking.XFrameOptionsMiddleware‘, ‘app01.middleC.Login‘ ]
- diango的中间件就是定义一个类,继承MiddlewareMixin类,这个类中有五个方法;分别给出他们什么时间执行,执行顺序,返回值:
- process_request:
-
1.执行时间:在视图函数views执行之前 2.参数:request -->跟视图函数一致,都是一个对象,可以对其封装属性 3.执行顺序:多个中间件时,按照注册顺序执行, 4.返回值: None:正常流程,依次往下走; return response对象,会直接从这结束,视图函数也不会执行,开始返回给浏览器一个response对象;
当前中间件之后的中间件的request方法都不执行;所以也没有response方法; - process_response:
-
执行时间:在views函数之后调用, 参数:(request,response) 返回值:这里因为是在views函数之后调用,所以要接收一个response对象要返回; 执行顺序:对个中间件时,按注册顺序倒序执行,
-
以上是关于django中间件的主要内容,如果未能解决你的问题,请参考以下文章
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段
Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段