序列化组件
一:序列化组件
1:Django自带序列化组件(非常难用)
2:rest_framework序列化之Serializer
写一个头,继承Serializer
在类中写要序列化的字段
在View.py中使用:
book_ser=BookSerializer(book_list,many=True)
book_ser.data ----就是序列化后的数据
source有三种使用方法:1,指定字段、2,指定方法、3,深度查询(跨表)
注意:SerializerMethodField,必须配合方法使用 get_字段名(self,obj), obj是什么?当前要序列化的对象。SerializerMethodField对应的方法中还可以继续使用其他的序列化类。
3:rest_framework序列化之ModelSerializer
写一个类继承ModelSerializer,在类的内部写:
class Meta: model=models.Book fields='__all__' # exclude=['name','price'] depth=1 #重写属性
4:查询单本书
books/1,序列化单条数据:book_ser=BookSerializer(instance=book,many=False)
注意book:不是queryset对象,是book对象
5:新增一本书
/books/ ——发送post请求,携带json格式数据
6:反序列化之局部,全局钩子(序列化的类一定继承ModelSerializer的类)
def validate_name(self,value): if value.startswith('sb'): #不能让你过 raise ValidationError('书名不能以sb开头') else: return value #全局钩子函数,对全局字段进行校验 def validate(self,a): # print(a) name=a.get('name') price=a.get('price') if name != price: raise ValidationError('错了') else: return a
另附:json在线格式化:https://www.json.cn/