$Django Rest Framework-频率组件,解析器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了$Django Rest Framework-频率组件,解析器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2390字,纯文字阅读大概需要4分钟。
内容图文
1 频率组件
# 自定义组件写频率认证(重点继承BaseThrottle) from rest_framework.throttling import BaseThrottle import time class Thro(BaseThrottle): dic={} def allow_request(self, request, view): ‘‘‘ :param request: :param view: :return: 布尔类型 ‘‘‘ ctime=time.time() self.ip=request.META.get(‘REMOTE_ADDR‘) if self.ip and self.ip notin self.dic: self.dic[self.ip]=[ctime] return True lis=self.dic.get(self.ip) #把最早的时间和现在时间对比 1.大于多少秒(60s)的去掉 2.留下的是多少秒内(60秒内)的时间数 = 访问次数while lis and ctime-lis[-1]>60: lis.pop() #剩下的时间列表 1.在多少秒内(60s内)2.设置访问次数:列表内时间个数=限制范文次数if len(lis)<6: lis[:0]=[ctime] print (self.dic) return True print(self.dic) return False #访问超过限制触发def wait(self): ‘‘‘ :return:多少秒过后才可以访问 ‘‘‘#最早的时间 tim=self.dic.get(self.ip)[-1] ctime=time.time() #ctime-tim 值越来越大return 60-(ctime-tim) #局部使用 throttle_classes=[Thro,] #全局使用 REST_FRAMEWORK = { ‘DEFAULT_THROTTLE_CLASSES‘: [‘app01.Mythrottle.Thro‘, ], }
# settings REST_FRAMEWORK = { ‘DEFAULT_THROTTLE_CLASSES‘: [‘app01.Mythrottle.Thro‘, ], ‘DEFAULT_THROTTLE_RATES‘: { #self.scope : self.rate‘keykey‘: ‘6/m‘#1分钟最大访问次数为6 } } #定义一个频率组件类(重点继承SimpleRateThrottle)class Thro(SimpleRateThrottle): scope = ‘keykey‘def get_cache_key(self, request, view): # 返回ip地址# ip=request.META.get(‘REMOTE_ADDR‘)# return ipreturn self.get_ident (request)
class Books(APIView): # apiview的方法 # def throttled(self, request, wait): # """ # If request is throttled, determine what kind of exception to raise. # """ # 源码:实例话了一个对象,我们只需要把这个 数据属性的英文错误改成中文 # 中文显示:让后再让我们自定义类的对象调父类的ini方法 # raise exceptions.Throttled (wait) # 改中文 def throttled(self, request, wait): from rest_framework import exceptions class sss(exceptions.Throttled): default_detail = ‘访问限制‘ extra_detail_singular = ‘{wait}秒解除限制‘ extra_detail_plural = ‘Expected available in {wait} seconds.‘raise sss(wait) def get(self,request): response={‘status‘:100,‘msg‘:‘请求成功‘} books=models.Book.objects.all() ser=Myserializers.Books(books,many=True) response[‘data‘]=ser.data return JsonResponse(response,safe=False)
2 解析器
作用:传过来的数据,解析成字典 使用: 局部使用: from rest_framework.parsers import JSONParser,FormParser 在视图类中: parser_classes = [FormParser,] 全局使用 REST_FRAMEWORK = { ‘DEFAULT_PARSER_CLASSES‘:[ ‘rest_framework.parsers.JSONParser‘ ] } 局部使用指定的解析器: 在视图类中: parser_classes = [FormParser,]
原文:https://www.cnblogs.com/3sss-ss-s/p/10121394.html
内容总结
以上是互联网集市为您收集整理的$Django Rest Framework-频率组件,解析器全部内容,希望文章能够帮你解决$Django Rest Framework-频率组件,解析器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。