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查询sqlite数据表的方法
May 08 Python
解决Python出现_warn_unsafe_extraction问题的方法
Mar 24 Python
TensorFlow实现iris数据集线性回归
Sep 07 Python
Python设计模式之命令模式原理与用法实例分析
Jan 11 Python
pytorch中的上采样以及各种反操作,求逆操作详解
Jan 03 Python
Python中join()函数多种操作代码实例
Jan 13 Python
使用Python对Dicom文件进行读取与写入的实现
Apr 20 Python
jenkins+python自动化测试持续集成教程
May 12 Python
为什么说python更适合树莓派编程
Jul 20 Python
python的flask框架难学吗
Jul 31 Python
详解KMP算法以及python如何实现
Sep 18 Python
Python实战之大鱼吃小鱼游戏的实现
Apr 01 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
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
php实现的DateDiff和DateAdd时间函数代码分享
2014/08/16 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
vue中改变选中当前项的显示隐藏或者状态的实现方法
2018/02/08 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
Vue实现简单分页器
2018/12/29 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
详解基于vue-cli3快速发布一个fullpage组件
2019/03/08 Javascript
NestJs 静态目录配置详解
2019/03/12 Javascript
微信小程序云开发如何使用npm安装依赖
2019/05/18 Javascript
Python实现二分法算法实例
2015/02/02 Python
python实现基本进制转换的方法
2015/07/11 Python
Python 详解基本语法_函数_返回值
2017/01/22 Python
python numpy 部分排序 寻找最大的前几个数的方法
2018/06/27 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
幼儿园教学管理制度
2014/02/04 职场文书
2014春晚主持词
2014/03/25 职场文书
小学生个人先进事迹材料
2014/05/08 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
感恩教育月活动总结
2014/07/07 职场文书
艺术学院毕业生求职信
2014/07/09 职场文书
综合素质自我评价怎么写
2014/09/14 职场文书
PHP中strval()函数实例用法
2021/06/07 PHP
Ajax实现异步加载数据
2021/11/17 Javascript
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers
SpringBoot使用ip2region获取地理位置信息的方法
2022/06/21 Java/Android