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(代码片段

django-中间件

django之设置中间件模板

Spring Rest 文档。片段生成时 UTF-8 中间字节无效 [重复]