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中的字典来处理索引统计的方法
May 05 Python
Python中unittest模块做UT(单元测试)使用实例
Jun 12 Python
Python入门教程之运算符与控制流
Aug 17 Python
几种实用的pythonic语法实例代码
Feb 24 Python
Python利用sqlacodegen自动生成ORM实体类示例
Jun 04 Python
Django高级编程之自定义Field实现多语言
Jul 02 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
Apr 17 Python
python实现飞船大战
Apr 24 Python
python实现取余操作的简单实例
Aug 16 Python
python实现登录与注册系统
Nov 30 Python
python3代码中实现加法重载的实例
Dec 03 Python
Python修改DBF文件指定列
Dec 19 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根据IP地址获取所在城市具体实现
2013/11/27 PHP
php实现求相对时间函数
2015/06/15 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
jquery.post用法示例代码
2014/01/03 Javascript
原生javascript实现隔行换色
2015/01/04 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
酷炫jQuery全屏3D焦点图动画效果
2016/03/22 Javascript
Angular 2应用的8个主要构造块有哪些
2016/10/17 Javascript
JS弹性运动实现方法分析
2016/12/15 Javascript
jQuery实现点击关注和取消功能
2017/07/03 jQuery
Vue iview-admin框架二级菜单改为三级菜单的方法
2018/07/03 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
python查找第k小元素代码分享
2013/12/18 Python
python实现数通设备tftp备份配置文件示例
2014/04/02 Python
Python中列表的一些基本操作知识汇总
2015/05/20 Python
对Python中画图时候的线类型详解
2019/07/07 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
Python类及获取对象属性方法解析
2020/06/15 Python
Peter Millar官网:美国高档生活服饰品牌
2018/07/02 全球购物
接口中的方法可以是abstract的吗
2015/07/23 面试题
文明餐桌活动方案
2014/02/11 职场文书
学习实践科学发展观心得体会
2014/09/10 职场文书
社区工作者个人总结
2015/02/28 职场文书
python中%格式表达式实例用法
2021/06/18 Python
浅谈克隆 JavaScript
2021/11/02 Javascript