django序列化serializers过程解析
这篇文章主要介绍了django序列化serializers过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
DRF的核心就是前后端分离的核心
前后端分离开发的核心:
- 将模型转换为json称之为序列化
- 将json转换为模型称之为反序列化
Django的序列化工具让你可以将Django的模型‘翻译'成其它格式的数据。通常情况下,这种其它格式的数据是基于文本的,并且用于数据交换\传输过程。
序列化数据
Django为我们提供了一个强大的序列化工具serializers。使用它也很简单,如下所示:
fromdjango.coreimportserializers data=serializers.serialize("xml",SomeModel.objects.all())
data=serializers.serialize("json",Author.objects.all()) print(data) [{"model":"index.author","pk":1,"fields":{"name":"pfeiliu","age":19,"email":"789@163.com","isActive":false}},{"model":"index.author","pk":5,"fields":{"name":"laowei","age":18,"email":"123@qq.com","isActive":true}},{"model":"index.author","pk":6,"fields":{"name":"WangDB","age":36,"email":"wangdb@163.com","isActive":false}},{"model":"index.author","pk":7,"fields":{"name":"WangDB","age":36,"email":"wangdb@163.com","isActive":false}},{"model":"index.author","pk":8,"fields":{"name":"WangDB","age":36,"email":"wangdb@163.com","isActive":false}},{"model":"index.author","pk":9,"fields":{"name":"WangDB","age":36,"email":"wangdb@163.com","isActive":false}},{"model":"index.author","pk":10,"fields":{"name":"WangDB","age":36,"email":"wangdb@163.com","isActive":false}},{"model":"index.author","pk":11,"fields":{"name":"WangDB","age":36,"email":"wangdb@163.com","isActive":false}},{"model":"index.author","pk":12,"fields":{"name":"WangDB","age":36,"email":"wangdb@163.com","isActive":false}},{"model":"index.author","pk":13,"fields":{"name":"WangDB","age":36,"email":"wangdb@163.com","isActive":false}},{"model":"index.author","pk":14,"fields":{"name":"WangDB","age":36,"email":"wangdb@163.com","isActive":false}}]
首先,从djang.core导入它,然后调用它的serialize方法,这个方法至少接收两个参数,第一个是你要序列化成为的数据格式,这里是‘xml',第二个是要序列化的数据对象,数据通常是ORM模型的QuerySet,一个可迭代的对象。
就是这么简单!!
序列化指定字段
如果你不想序列化模型对象所有字段的内容,只想序列化某些指定的字段,可以使用fields参数,如下所示:
fromdjango.coreimportserializers data=serializers.serialize('xml',SomeModel.objects.all(),fields=('name','size'))
data=serializers.serialize("json",Author.objects.all(),fields=('name','age')) print(data) [{"model":"index.author","pk":1,"fields":{"name":"pfeiliu","age":19}},{"model":"index.author","pk":5,"fields":{"name":"laowei","age":18}},{"model":"index.author","pk":6,"fields":{"name":"WangDB","age":36}},{"model":"index.author","pk":7,"fields":{"name":"WangDB","age":36}},{"model":"index.author","pk":8,"fields":{"name":"WangDB","age":36}},{"model":"index.author","pk":9,"fields":{"name":"WangDB","age":36}},{"model":"index.author","pk":10,"fields":{"name":"WangDB","age":36}},{"model":"index.author","pk":11,"fields":{"name":"WangDB","age":36}},{"model":"index.author","pk":12,"fields":{"name":"WangDB","age":36}},{"model":"index.author","pk":13,"fields":{"name":"WangDB","age":36}},{"model":"index.author","pk":14,"fields":{"name":"WangDB","age":36}}]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。