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

djabgo 中间件

时间:2018-11-02 01:47:53      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:user   def   bsp   中断   code   col   图片   .com   roc   

1.中间件是发生在request和response 之间,都会经过中间键,

技术分享图片

上述截图中的中间件都是django中的,我们也可以自己定义一个中间件,我们可以自己写一个类,但是必须继承MiddlewareMixin

需要导入

1
from django.utils.deprecation import MiddlewareMixin

 技术分享图片

技术分享图片
 1 from django.utils.deprecation import MiddlewareMixin
 2 from django.shortcuts import HttpResponse
 3 
 4 class Md1(MiddlewareMixin):
 5 
 6     def process_request(self,request):
 7         print("Md1请求")
 8  
 9     def process_response(self,request,response):
10         print("Md1返回")
11         return response
12 
13 class Md2(MiddlewareMixin):
14 
15     def process_request(self,request):
16         print("Md2请求")
17         #return HttpResponse("Md2中断")
18     def process_response(self,request,response):
19         print("Md2返回")
20         return response
Mymiddlewares

结果:

Md1请求
Md2请求
view函数...
Md2返回
Md1返回

如果当请求到达请求2的时候直接不符合条件返回,即return HttpResponse("Md2中断"),程序将把请求直接发给中间件2返回,然后依次返回到请求者,结果如下:

返回Md2中断的页面,后台打印如下:

Md1请求
Md2请求
Md2返回
Md1返回

技术分享图片

 





技术分享图片
 1 from django.utils.deprecation import MiddlewareMixin
 2 from django.shortcuts import redirect,HttpResponse,render
 3 class M1(MiddlewareMixin):
 4     def process_request(self,request):
 5         if request.path in ["/login/","/reg/"]:
 6             print(request.META.get("REMOTE_ADDR"))
 7             return None
 8         if not request.user.is_authenticated:
 9             return redirect("/login/")
10 
11 class M2(MiddlewareMixin):
12     def process_request(self,request):
13         if "128.0." in request.META.get("REMOTE_ADDR"):
14             return redirect("/error/")
15         else:
16             return None
关于控制登录和限制ip

setting设置

 

‘app01.utils.middleware.M1‘,

 

djabgo 中间件

标签:user   def   bsp   中断   code   col   图片   .com   roc   

原文地址:https://www.cnblogs.com/zhangqing979797/p/9893321.html

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