drf的序列化组件:

  1. 用途: 把python中的对象,转成json格式字符串

   2. 使用步骤1: 写一个类继承Serializer或者ModelSerializer

    举例(类中选取字段进行序列化):

       class BookSerializer(serializers.Serializer):
         id = serializers.CharField()
         title = serializers.CharField()
         price = serializers.CharField()  

    举例(把类中字段全部进行序列化):    

    class TestSer(serializers.ModelSerializer):
    class Meta:
    model = models.Takes
    fields = '__all__'

 

  3. 使用步骤2(setting的配置):

        book_ser=BookSerializer(queryset对象/单个对象,many=True/False)
        book_ser.data   序列化完成的字典

  4.总结:

    1 变量名和source指定的值不能一样
    2 source='publish.name'还支持继续 .
    3 source 还支持方法(没用)
    4 支持写方法,如下
      方法一定传一个参数,是当前book对象
      publish_dic=serializers.SerializerMethodField()
          def get_publish_dic(self,obj):

         return

      结果:{'id':obj.publish.pk,'name':obj.publish.name}

drf的认真组件:

  1.认证组件的好处:
    比如要访问books/路径,必须登录之后才能访问。一旦登录成功,在响应结果中写一个随机字符串。
    举例:{ status:100
        msg:登录成功
             token:sdafsdfasd
      }

    只要用了drf,post提交数据,就不需要csrf验证了

  

  2.使用步骤1:写一个类,继承BaseAuthentication

  3.使用步骤2:def authenticate(self,request) ,记住传request对象

  4.在视图类中使用:(不要加括号):

    1.局部使用:authentication_classes=[AuthLogin](写在views中)

    2.全局使用:-REST_FRAMEWORK={"DEFAULT_AUTHENTICATION_CLASSES":["app01.auth.AuthLogin",]}(在setting中配置)

    3.全局使用的局部禁用:authentication_classes = [](写在views中)

  5.补充:

     -drf内置了一些认证类(了解):
     -TokenAuthentication
     -SessionAuthentication

drf的权限组件:

  1.使用步骤1:写一个类,继承BasePermission

  2.使用步骤2:def has_permission(self, request, view): ,记住传request对象和view

  3.在视图类中使用:(不要加括号):

    1.局部使用:permission_classes=[MyPer](写在views中)

    2.全局使用:-REST_FRAMEWORK={"DEFAULT_PERMISSION_CLASSES":['app01.auth.MyPer']}(在setting中配置)

    3.全局使用的局部禁用:permission_classes = [](写在views中)

drf的频率组件:

  1.使用步骤1:写一个类,继承SimpleRateThrottle

  2.使用步骤2:def get_cache_key(self, request, view):,记住传request对象和view

  3.使用步骤3:'DEFAULT_THROTTLE_RATES': {
           这个key跟scope对应,value值3/m  3/h    4/d
           'xx': '3/m'
          }(在setting中配置)

  4.在视图类中使用:(不要加括号):

    1.局部使用:throttle_classes = [VisitThrottle](写在views中)

    2.全局使用:REST_FRAMEWORK={"DEFAULT_THROTTLE_CLASSES":["app01.auth.VisitThrottle"]}(在setting中配置)

    3.全局使用的局部禁用:throttle_classes = [](写在views中)

drf的解析器:

  1.局部使用:parser_classes=[JSONParser,](写在views中)

  2.全局使用:'DEFAULT_PARSER_CLASSES':['rest_framework.parsers.JSONParser'](在setting中配置)

响应器(一般用默认就可以了):

  1.局部使用:renderer_classes=[JSONRenderer,](写在views中)

  2.全局使用:'DEFAULT_RENDERER_CLASSES': (
              'rest_framework.renderers.JSONRenderer',
              'rest_framework.renderers.BrowsableAPIRenderer',
         )(在setting中配置)

   

  

drf的组件和解析器的更多相关文章

  1. DRF 的 版本,解析器,与序列化

    DRF 的 版本,解析器,与序列化 补充 配置文件中的 类的调用: (字符串) v1 = ["view.xx.apth.Role","view.xx.apth.Role& ...

  2. Restful API学习Day5 - DRF之限制 分页 解析器和渲染器

    参考文档: Django REST framework基础:认证.权限.限制 Django REST framework基础:分页 Django REST framework基础:解析器和渲染器 一. ...

  3. $Django Rest Framework-频率组件,解析器

    1 频率组件 #自定义组件写频率认证(重点继承BaseThrottle) from rest_framework.throttling import BaseThrottle import time ...

  4. Django day28 频率组件,解析器

    一:频率组件: 1.频率是什么? 节流,访问控制 2. (1)内置的访问频率控制类SimpleRateThrottle (2)写一个类,继承SimpleRateThrottle class MyThr ...

  5. rest-framework组件 之 解析器

    解析器 request类 django的request类和rest-framework的request类的源码解析 局部视图 from rest_framework.parsers import JS ...

  6. DRF路由组件和渲染器组件

    参考博客:https://www.cnblogs.com/wupeiqi/articles/7805382.html

  7. DRF 解析器组件

    Django无法处理application/json协议请求的数据,即,如果用户通过application/json协议发送请求数据到达Django服务器,我们通过request.POST获取到的是一 ...

  8. DRF之频率限制、分页、解析器和渲染器

    一.频率限制 1.频率限制是做什么的 开放平台的API接口调用需要限制其频率,以节约服务器资源和避免恶意的频繁调用. 2.频率组件原理 DRF中的频率控制基本原理是基于访问次数和时间的,当然我们可以通 ...

  9. DjangoRestFramework 学习之restful规范 APIview 解析器组件 Postman等

    DjangoRestFramework学习一之restful规范.APIview.解析器组件.Postman等 本节目录 一 预备知识 二 restful规范 三 DRF的APIView和解析器组件 ...

随机推荐

  1. u-boot2010.06移植阶段三--norflash驱动

    2011-03-20 23:06:24 学习笔记: 效果图: 参考步骤: 一,把smdk2410 # 改成apple2440 #  1,在board/samsung/apple2440/apple24 ...

  2. WIFI CAT ET III Adapter Caterpillar ET3 New Arrival

    The old bluetooth cat et adatper iii has stopped production, and you can get the new WIFI CAT Caterp ...

  3. go get Unknown SSL protocol error in connection to gopkg.in

    OSX go get报错 go get Unknown SSL protocol error in connection to gopkg.in https://github.com/niemeyer ...

  4. 模块 import 与from

    什么是模块:就是一系列功能的集合体 模块的来源 :1内置模块   2 第三方模块   3 自定义模块 模块的格式: 1 使用python编写的.py文件 2 已被编译为共享库或DLL的C或C++扩展 ...

  5. Docker Kubernetes 容器重启策略

    Docker Kubernetes 容器重启策略 当容器被创建时,容器会根据重启策略来进行容器重启. 支持三种策略: Always:当容器终止退出后,总是重启容器,默认策略. OnFailure:当容 ...

  6. Redis 分布式缓存 Java 框架

    为什么要在 Java 分布式应用程序中使用缓存? 在提高应用程序速度和性能上,每一毫秒都很重要.根据谷歌的一项研究,假如一个网站在3秒钟或更短时间内没有加载成功,会有 53% 的手机用户会离开. 缓存 ...

  7. 自制操作系统Antz(1)——Boot Sector

    0.引子 最近在看操作系统底层方面的东西,最开始的为什么是07c00h这个问题就让我对操作系统有了很大的兴趣.所以准备在看书之余顺便写一个操作系统(Anz).至于为什么这个系统会被叫做Antz,可以参 ...

  8. Win32汇编学习(6):键盘输入消息

    这次,我们将要学习WINDOWS程序是如何处理键盘消息的. 理论: 因为大多数的PC只有一个键盘,所以所有运行中的WINDOWS程序必须共用它.WINDOWS 将负责把击键消息送到具有输入焦点的那个应 ...

  9. 微信小程序实现部分双向数据绑定(为input、picker、textarea编写统一的更新数据逻辑)

    wepy开发小程序 以input为例,微信小程序没有数据双向绑定,input要显示绑定的数据即value等于一个绑定的量 <input type="text" value=& ...

  10. innoDB锁小结

    innodb的锁分两类:lock和latch. 其中latch主要是保证并发线程操作临界资源的正确性,要求时间非常短,所以没有死锁检测机制.latch包括mutex(互斥量)和rwlock(读写锁). ...