zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    CSS选择器之伪类选择器(元素)
    CSS选择器之基本选择器+属性选择器
    bugku 点击1000000次
    bugku web 5
    bugku 矛盾 30
    bugku 域名解析题 50
    bugku 好多压缩包
    六子冲 模拟棋盘
    poj3126 Prime Path(c语言)
    poj1426 Find The Multiple(c语言巧解)
  • 原文地址:https://www.cnblogs.com/Lucifer77/p/10522390.html
Copyright © 2011-2022 走看看