• restful规范和Django restful framework


    ---恢复内容开始---

    序列化的三种方式:

    --values + JsonResponse

    --django.core.serializers + HttpResponse

    -- DRF实现序列化

       -- 第一步声明序列化器

       -- 第二步使用我们的序列化器序列化queryset

       -- 序列好的数据在ser_obj.data里边、

      --无法序列化的数据丢弃

    -- 外键关系的序列化是嵌套的序列化器对象

      注意many=True

    -- 反序列化post请求

       --  确定新增的数据结构

     -- 序列化器

           -- 正序反序字段不统一

      -- required=False 只序列化不走校验

      -- read_only=True 只序列化用

      -- write_only=True 只反序列化用

    -- 反序列化 put/patch 请求

      -- 重写update方法

      -- ser_obj=BudgetModelSerializer(instance=budget_obj,data=request.data,partial=True)

    --验证

     -- 单个字段的验证

      def  validate_字段名称(self,value):

        不通过raise serializers.ValidationError('错误信息')

        通过 return value

    --多个字段验证

      def validate(self,attrs):

        attrs是所有字段组成的字典

    -- 自定义

      def my_validate(value):

        配置 -- 给字段加validators=[my_validate]

    ---ModelSerializer

      -- class Meta:

      model = 表名

      fields = "__all__"

      depth = 1

      extra_kwargs={{默认字段:{参数:值}},}

    -- SerializerMethodField()

      def get_字段名称(self,obj):

        obj 每次序列化的模型对象

        return 自定义的数据

    视图组件:

      -- 第一次封装

       

    GenericAPIView(APIView):      
            queryset = None
            serializer_class= None      
            def get_queryset(self):        
                  return self.queryset.all()
       def  get_serializer(self):
                  return self.serializer_class(*args,**kwargs)   
    class ListModelMixin(object):
        queryset=Budget.object.all()
        serializer_class=BudgetModelSerializer
               def list(self,request,*args,**kwargs)    
                 queryset=self.get_queryset()
                     serializer = self.get_serializer(queryset,many=True)
                     return Response(serializer.data)    

    --第二次封装 方便继承

    --第三次封装 ViewSetMixin 重新as_view方法

        -- 在 ViewSetMixin 执行self.dispatch()方法之前

          把self.get = self.list

    ---恢复内容结束---

    序列化的三种方式:

    --values + JsonResponse

    --django.core.serializers + HttpResponse

    -- DRF实现序列化

       -- 第一步声明序列化器

       -- 第二步使用我们的序列化器序列化queryset

       -- 序列好的数据在ser_obj.data里边、

      --无法序列化的数据丢弃

    -- 外键关系的序列化是嵌套的序列化器对象

      注意many=True

    -- 反序列化post请求

       --  确定新增的数据结构

     -- 序列化器

           -- 正序反序字段不统一

      -- required=False 只序列化不走校验

      -- read_only=True 只序列化用

      -- write_only=True 只反序列化用

    -- 反序列化 put/patch 请求

      -- 重写update方法

      -- ser_obj=BudgetModelSerializer(instance=budget_obj,data=request.data,partial=True)

    --验证

     -- 单个字段的验证

      def  validate_字段名称(self,value):

        不通过raise serializers.ValidationError('错误信息')

        通过 return value

    --多个字段验证

      def validate(self,attrs):

        attrs是所有字段组成的字典

    -- 自定义

      def my_validate(value):

        配置 -- 给字段加validators=[my_validate]

    ---ModelSerializer

      -- class Meta:

      model = 表名

      fields = "__all__"

      depth = 1

      extra_kwargs={{默认字段:{参数:值}},}

    -- SerializerMethodField()

      def get_字段名称(self,obj):

        obj 每次序列化的模型对象

        return 自定义的数据

    视图组件:

      -- 第一次封装

       

    GenericAPIView(APIView):      
            queryset = None
            serializer_class= None      
            def get_queryset(self):        
                  return self.queryset.all()
       def  get_serializer(self):
                  return self.serializer_class(*args,**kwargs)   
    class ListModelMixin(object):
        queryset=Budget.object.all()
        serializer_class=BudgetModelSerializer
               def list(self,request,*args,**kwargs)    
                 queryset=self.get_queryset()
                     serializer = self.get_serializer(queryset,many=True)
                     return Response(serializer.data)    

    --第二次封装 方便继承

    --第三次封装 ViewSetMixin 重新as_view方法

        -- 在 ViewSetMixin 执行self.dispatch()方法之前

          把self.get = self.list

  • 相关阅读:
    【vim】分割窗口、标签页与Quickfix窗口
    新手学cocos2dx,centos7下的安装过程
    外部排序,杀鸡焉用牛刀?
    5亿整数的大文件,怎么排?
    【Hadoop】HDFS
    你好,树
    写给博客园博客团队,md的预览在哪里?
    老菜鸟致青春,程序员应该选择java 还是 c#-
    高性能server分析
    高性能服务端漫谈
  • 原文地址:https://www.cnblogs.com/Lucifer77/p/10522390.html
Copyright © 2020-2023  润新知