过滤,排序,异常处理
摘要:过滤 drf自己原生的过滤不能根据外键字段来过滤,django_filter支持外键字段来过滤 1. # 安装django_filter 2. # 在项目配置文件的APP中注册 INSTALLED_APPS = [ ... 'django_filters', ] 3. # 全局配置或局部配置 RES
阅读全文
频率
摘要:# 在项目配置文件中全局配置 REST_FRAMEWORK = { 'DEFAULT_THROTTLE_CLASSES': [ # 针对匿名用户,限制访问频率 'rest_framework.throttling.AnonRateThrottle', # 针对登录用户 'rest_framework
阅读全文
jwt
摘要:新的认证方式,由三部分组成:头header,payload(一些用户信息),签名 主要是防篡改, """ 1)jwt分三段式:头.体.签名 (head.payload.sgin) 2)头和体是可逆加密,让服务器可以反解出user对象;签名是不可逆加密,保证整个token的安全性 3)头体签名三部分,
阅读全文
认证
摘要:认证的实现 写一个类,继承BaseAuthentication,也可以不继承这个类,重写authenticate方法,认证的逻辑写在里面,认证通过,返回两个值,一个值是user(可以自己生成,也可以去查数据库获取),最终给了Request对象,认证失败,抛异常APIException(它是父类)或者
阅读全文
视图集
摘要:视图集 ModelViewSet继承了5个视图扩展类和GenericViewSet class ModelViewSet(mixins.CreateModelMixin, mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.Destr
阅读全文
Request对象和Response对象
摘要:Request里面有_authenticate方法,user,auth,data这几个方法被装饰成了属性,当取前两个属性的值的时候,如果有这个属性,就直接返回它的值 self._user self._auth,如果没有这个属性,就调用_authenticate方法,源码参见: https://www
阅读全文
APIView源码分析
摘要:from rest_framework.views import APIView class APIView(View): ... @classmethod def as_view(cls, **initkwargs): ... # super方法调用父类(也就是View)的as_view方法,这个
阅读全文
BaseSerializer部分源码
摘要:修改数据的过程 调用序列化对象的save方法:book_ser.save(),通过属性查找,找到了BaseSerializer里面的save方法 在BookSerializer类里面重写它的父类Serializer的父类BaseSerializer的update方法,在update方法中调用模型类对
阅读全文