码迷,mamicode.com
首页 > 其他好文 > 详细

django中间件

时间:2018-10-15 20:21:15      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:组件   idt   messages   rom   倒序   src   ssi   uri   set   

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中间件

标签:组件   idt   messages   rom   倒序   src   ssi   uri   set   

原文地址:https://www.cnblogs.com/0627zhou/p/9792728.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!