---恢复内容开始---
序列化的三种方式:
--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