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

Django学习系列之中间件

时间:2017-03-05 23:45:02      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:执行   127.0.0.1   template   cat   错误   ret   cep   smi   方法   

中间件的定义

  • 中间件是一个、一个的管道,如果相对任何所有的通过Django的请求进行管理都需要自定义中间件

  • 中间件可以对进来的请求和出去的请求进行控制

  • 中间件是一类

django请求生命周期

技术分享

自定义中间件

  • process_request(self,request): 请求到达之后之后先执行这个中间件  
  • process_view(self, request, callback, callback_args, callback_kwargs):
  • process_exception(self, request, exception) 这个方法只有在出现错误的时候才会触发
  • process_response(self, request, response):请求处理完成出去之后执行这个自己解决
  • process_template_response(self,request,response) 这个方法只有在返回对象中有render方法的时候才执行,如render_to_response(‘/index/‘)

实例

编写中间件

from  django.utils import deprecation

class M1(deprecation.MiddlewareMixin):
    def process_request(self,request):
        print(M1.process_request)

    def process_response(self,request,response):
        print(M1.process_response)
        return response

注册中间件

MIDDLEWARE = [
    middle.middle1.M1,  #中间件地址,middle目录下的middle.py文件下的MI
    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,
]
#由于中间件是对全局生效的,所以需要注意

定义视图函数

def login(request):
    print(123)
    return HttpResponse("ok")

测试

随便找一个url,访问127.0.0.1:8000/login

M1.process_request  #请求到来 先走request中间件
123                 #视图函数本身输出123
M1.process_response #最后走response        

 

Django学习系列之中间件

标签:执行   127.0.0.1   template   cat   错误   ret   cep   smi   方法   

原文地址:http://www.cnblogs.com/zhaijunming5/p/6507198.html

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