zoukankan      html  css  js  c++  java
  • drf的组件和解析器

    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中配置)

       

      

  • 相关阅读:
    【数字图像处理】 形态学转换
    【数字图像处理】阈值处理
    【数字图像处理】 图像平滑
    【数字图像处理】直方图均衡化
    【Tool】Augmentor和imgaug——python图像数据增强库
    [caffe] caffe训练tricks
    [Papers] Semantic Segmentation Papers(1)
    【Computer Vision】 复现分割网络(1)——SegNet
    Comet OJ
    NOI2019游记 —— 夏花般绚烂,繁星般璀璨
  • 原文地址:https://www.cnblogs.com/yanhui1995/p/10479285.html
Copyright © 2011-2022 走看看