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

 

转载于:https://www.cnblogs.com/Lucifer77/p/10522390.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值