django序列化serializers过程解析


Posted in Python onDecember 14, 2019

这篇文章主要介绍了django序列化serializers过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

DRF的核心 就是 前后端分离的核心

前后端分离开发的核心:

  • 将模型转换为json 称之为 序列化
  • 将json转换为模型 称之为 反序列化

Django的序列化工具让你可以将Django的模型‘翻译'成其它格式的数据。通常情况下,这种其它格式的数据是基于文本的,并且用于数据交换\传输过程。

序列化数据

Django为我们提供了一个强大的序列化工具serializers。使用它也很简单,如下所示:

from django.core import serializers
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": "lao wei", "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参数,如下所示:

from django.core import serializers
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": "lao wei", "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}}]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之变量和参数
Oct 10 Python
Python常用算法学习基础教程
Apr 13 Python
Python数据结构与算法之完全树与最小堆实例
Dec 13 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
Jan 05 Python
浅谈Python黑帽子取代netcat
Feb 10 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
Apr 20 Python
Django Rest framework权限的详细用法
Jul 25 Python
如何更改 pandas dataframe 中两列的位置
Dec 27 Python
python 数据库查询返回list或tuple实例
May 15 Python
python小程序之4名牌手洗牌发牌问题解析
May 15 Python
python线程里哪种模块比较适合
Aug 02 Python
Python字符串对齐方法使用(ljust()、rjust()和center())
Apr 26 Python
Python搭建HTTP服务过程图解
Dec 14 #Python
Pyqt5自适应布局实例
Dec 13 #Python
解决安装pyqt5之后无法打开spyder的问题
Dec 13 #Python
PyQT5 emit 和 connect的用法详解
Dec 13 #Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 #Python
Python assert关键字原理及实例解析
Dec 13 #Python
使用pyqt 实现重复打开多个相同界面
Dec 13 #Python
You might like
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
php 大数据量及海量数据处理算法总结
2011/05/07 PHP
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
高性能PHP框架Symfony2经典入门教程
2014/07/08 PHP
PHP调用wsdl文件类型的接口代码分享
2014/11/19 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
2015/01/26 PHP
Laravel实现表单提交
2017/05/07 PHP
限制文本框输入N个字符的js代码
2010/05/13 Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
2011/05/25 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
2016/12/29 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
vue-cli开发环境实现跨域请求的方法
2018/04/07 Javascript
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
2018/04/13 Javascript
js实现数字滚动特效
2019/12/16 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
React.js组件实现拖拽排序组件功能过程解析
2020/04/27 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
利用Python为iOS10生成图标和截屏
2016/09/24 Python
python字符串常用方法
2018/06/14 Python
如何给Python代码进行加密
2020/01/10 Python
Python OrderedDict字典排序方法详解
2020/05/21 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
预备党员党课思想汇报
2014/01/13 职场文书
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
2015年员工试用期工作总结
2015/05/28 职场文书
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS