博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中间键应用
阅读量:6354 次
发布时间:2019-06-22

本文共 2479 字,大约阅读时间需要 8 分钟。

########## 中间键

请求-中间键-路由-视图-数据库-模版-视图-中间键-响应

对所有请求做操作的时候,比如IP访问,我们利用中间键屏蔽IP

对某几个函数做操作,可以用装饰器 

登陆 crsf 日志 都可以写在中间键里 

中间键是一个类

请求的方法—press_request

响应的方法—prcess_response

 

###########  Settings 配置

1 SJF = "user_info"2 3 MIDDLEWARE = [4     'md.md.M1',5     'md.md.M2',6 ]

 

###########  中间键的创建

1 ########### 继承的类,可以直接粘贴过去用 2 class MiddlewareMixin(object): 3     def __init__(self, get_response=None): 4         self.get_response = get_response 5         super(MiddlewareMixin, self).__init__() 6  7     def __call__(self, request): 8         response = None 9         if hasattr(self, 'process_request'):10             response = self.process_request(request)11         if not response:12             response = self.get_response(request)13         if hasattr(self, 'process_response'):14             response = self.process_response(request, response)15         return response16 17 ########### 自定义的中间键,要继承 MiddlewareMixin18 class M1(MiddlewareMixin):19 20     def process_request(self,request):21           print('m1.process_request')22         return None # 默认就是None,结束当前,继续下面代码23 24     def process_response(self,request,response):25         print('m1.process_response')26         return response27 28 29 class M2(MiddlewareMixin):30 31     def process_request(self,request):32         print('m2.process_request')33 34     def process_response(self,request,response):35         print('m2.process_response')36         return response37 38 执行顺序,m1.request m2.request m2.response m1.response39 如果 m1 没有response 执行顺序40           m1.request m2.request m2.response 41 如果 m1 的response 直接返回了 执行顺序42         m1.request  m1.response

 

实例,通过中间键判断用户是否登陆

1 可以直接在m1.request里面判断请求过来session里面是否有这个用户,没有直接返回登陆 2 from django.conf import settings 3 from django.shortcuts import redirect 4  5 ########### 继承类 6 class M1(MiddlewareMixin): 7  8     def process_request(self,request): 9         # 无返回值:继续执行后续中间件和视图函数10         # 有返回值:执行自己的process_response和上面的response11         # request.xxxx= str: 添加数据,那么每次request里面都会有这个数据12         if request.path_info == "/login/":13             return None # 结束当前,继续后面的代码 m2.request m2.response ……14 15         user_info = request.session.get(settings.SJF)16         if not user_info:17             return redirect('/login/') # 注意重定向次数过多18 19 20     def process_response(self,request,response):21         print('m1.process_response')22         return response23 24 注意:25     settings 中间键顺序,自己写的不要写默认的上边,日志可以写在上面,都可以记录包括默认的

 

转载于:https://www.cnblogs.com/jokerbj/p/8173820.html

你可能感兴趣的文章
Windows下配置安装Git(二)
查看>>
一个最简单的基于Android SearchView的搜索框
查看>>
铁路开通WiFi“钱景”不明
查看>>
Facebook申请专利 或让好友及陌生人相互拼车
查看>>
电力“十三五”规划:地面光伏与分布式的分水岭
查看>>
美联社再告FBI:要求公开请黑客解锁iPhone花费
查看>>
三星电子出售希捷和夏普等四家公司股份
查看>>
任志远:当云计算遇上混合云
查看>>
思科联手发那科 用物联网技术打造无人工厂
查看>>
智慧城市首要在政府利用大数据的智慧
查看>>
2015年物联网行业:巨头展开专利大战
查看>>
以自动化测试撬动遗留系统
查看>>
网络安全初创公司存活之道
查看>>
《图解CSS3:核心技术与案例实战》——1.2节浏览器对CSS3的支持状况
查看>>
《Android应用开发》——2.4节应用类
查看>>
继 One Step 后,锤子科技 Big Bang 正式开源
查看>>
《数据科学:R语言实现》——2.5 使用Excel文件
查看>>
《淘宝店铺设计装修一册通》一2.5 抠图工具的简单运用
查看>>
《音乐达人秀:Adobe Audition实战200例》——实例4 收音机音乐节目转录到电脑里...
查看>>
《JavaScript应用程序设计》一一3.1 过时的类继承
查看>>