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中的五种异常处理机制介绍
Sep 02 Python
Python内置函数—vars的具体使用方法
Dec 04 Python
Python3实现腾讯云OCR识别
Nov 27 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
Dec 12 Python
python实现nao机器人身体躯干和腿部动作操作
Apr 29 Python
Python实现平行坐标图的绘制(plotly)方式
Nov 22 Python
pytorch GAN伪造手写体mnist数据集方式
Jan 10 Python
python numpy矩阵信息说明,shape,size,dtype
May 22 Python
Python使用20行代码实现微信聊天机器人
Jun 05 Python
sublime3之内网安装python插件Anaconda的流程
Nov 10 Python
python语言实现贪吃蛇游戏
Nov 13 Python
Pandas 稀疏数据结构的实现
Jul 25 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
ThinkPHP写第一个模块应用
2012/02/20 PHP
常见php数据文件缓存类汇总
2014/12/05 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
php中 $$str 中 "$$" 的详解
2015/07/06 PHP
JQuery 网站换肤功能实现代码
2009/11/02 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
javaScript知识点总结(必看篇)
2016/06/10 Javascript
Angularjs分页查询的实现
2017/02/24 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
js实现图片上传预览原理分析
2017/07/13 Javascript
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
2017/10/25 Javascript
微信小程序实现之手势锁功能实例代码
2018/07/19 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
python基于右递归解决八皇后问题的方法
2015/05/25 Python
Python合并两个字典的常用方法与效率比较
2015/06/17 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
django1.8使用表单上传文件的实现方法
2016/11/04 Python
使用tensorboard可视化loss和acc的实例
2020/01/21 Python
使用Python实现将多表分批次从数据库导出到Excel
2020/05/15 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
葡萄牙语专业个人求职信
2013/12/10 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
请假条的格式
2014/04/11 职场文书
大学迎新生标语
2014/10/06 职场文书
2014年敬老院工作总结
2014/12/08 职场文书
团员个人总结
2015/02/26 职场文书
警告通知
2015/04/25 职场文书
演讲比赛主持词
2015/06/29 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL
python turtle绘图命令及案例
2021/11/23 Python
详解Python中__new__方法的作用
2022/03/31 Python