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

middleware

时间:2017-09-19 19:50:29      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:app   __call__   rgs   ini   class   none   end   logs   war   

自定义middleware

新建一个文件夹,里面写自己的middleware

技术分享

技术分享

在settings 设置,

技术分享

 

在middleware.py文件中导入

 

from django.utils.deprecation import MiddlewareMixin


如果没法导入
可以这么写
class MiddlewareMixin(object):
    def __init__(self, get_response=None):
        self.get_response = get_response
        super(MiddlewareMixin, self).__init__()

    def __call__(self, request):
        response = None
        if hasattr(self, process_request):
            response = self.process_request(request)
        if not response:
            response = self.get_response(request)
        if hasattr(self, process_response):
            response = self.process_response(request, response)
        return response

 

class M1(MiddlewareMixin):
    def process_request(self,request):
        print(m1.process_request)
    def process_response(self,request,response):
        print(m1.process_response)
        return response

    def process_view(self, request, view_func, view_func_args, view_func_kwargs):
        print(m1.process_view)
        return render(request, login.html)

class M2(MiddlewareMixin):
    def process_request(self, request):
        print(m2.process_request)

    def process_view(self, request, view_func, view_func_args, view_func_kwargs):
        print(M2.process_view)
        # return render(request, ‘login.html‘)

    def process_exception(self, request, exception):
        print(m2.process_exception)
        return HttpResponse(开发的程序员已经被打死)

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

    def process_template_response(self, request, response):
        print(m2.process_template_response)
        return response

 

5个方法:
process_request
process_response
process_exception
process_template_respons
process_view(self, request, view_func, view_func_args, view_func_kwargs)

process_response 是要有返回值的,
关于执行的顺序,

技术分享

 

在上面这个列表中,当http请求到来,request会依次经过app01.md.M1,......django.middleware.clickjacking.XFrameOptionsMiddleware
response 正好相反
note:



















middleware

标签:app   __call__   rgs   ini   class   none   end   logs   war   

原文地址:http://www.cnblogs.com/yuyang26/p/7553529.html

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