解析器
解析器:
作用:传过来的数据,解析成字典
1.使用
使用: 局部使用: from rest_framework.parsers import JSONParser,FormParser 在视图类中: parser_classes = [FormParser,] 全局使用 REST_FRAMEWORK = { 'DEFAULT_PARSER_CLASSES':[ 'rest_framework.parsers.JSONParser' ] } 局部使用指定的解析器: 在视图类中: parser_classes = [FormParser,]
上节复习内容:
频率: -自己定义: -定义一个大字典 -请求来了,取出ip, -判断ip是否在大字典中,如果不在,先插入到字典中,然后返回true -如果在字典中,根据ip取出列表(时间列表,有顺序,最新的时间在最前面) -while循环,判断当前时间,距离最后一条时间,是否大于60s,如果大于60s,pop掉(循环完成,内部没有60s以外的时间) -判断列表长度,如果长度小于3,说明还可以访问,把当前时间,插到列表中的第一个位置,然后返回true -判断列表长度,如果长度大于等于3,返回false -内置频率访问的类 -写一个类继承 -scope='test' -def get_cache_key(self, request, view): #以什么做限制,就把什么返回 return self.get_ident(request) -跟setting中对应 'DEFAULT_THROTTLE_RATES': { 'test': '10/m' } -局部使用: throttle_classes = [MyThrottle,] -全局使用: 在setting中配置 'DEFAULT_THROTTLE_CLASSES': ['app01.MyAuth.MyThrottle', ],
认证和权限
认证: -认证类return的时候,返回值应该是两个或者是None -认证失败,抛异常 -局部使用 -全局使用 权限: -写一个权限类,如果权限认证成功,返回true,失败,返回false -局部使用 -全局使用
序列化: -写一个类,继承Serializer -写一些属性 -text=CharField() -source属性,可以传字段名,可以传方法(source指定的字段名不能跟前面字段名重复) -aa=SerializerMethodField() -写一个方法:get_字段名(self,对象) -在方法内,通过orm查询其他表的数据 -返回什么,SerializerMethodField对应的字段,就能拿到什么 -使用:视图类 -生成一个序列化类的对象(instance,data,many) -对象.data - 把对象,转成字典/列表 -数据校验保存功能 解析器: -局部使用 -全局使用