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 28 Python
python登陆asp网站页面的实现代码
Jan 14 Python
Python操作Word批量生成文章的方法
Jul 28 Python
python3+mysql查询数据并通过邮件群发excel附件
Feb 24 Python
python实现将excel文件转化成CSV格式
Mar 22 Python
利用python实现微信头像加红色数字功能
Mar 26 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
Python递归函数 二分查找算法实现解析
Aug 12 Python
Python操作Excel把数据分给sheet
May 20 Python
python判断正负数方式
Jun 03 Python
在tensorflow以及keras安装目录查询操作(windows下)
Jun 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中eclipse 用空格替换 tab键
2013/06/24 PHP
YII Framework教程之异常处理详解
2016/03/14 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
Javascript操纵Cookie实现购物车程序
2007/02/15 Javascript
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
基于JavaScript实现图片连播和联级菜单实例代码
2017/07/28 Javascript
JS实现静态页面搜索并高亮显示功能完整示例
2017/09/19 Javascript
vue 中filter的多种用法
2018/04/26 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
2018/05/09 jQuery
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
2020/08/05 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
python+selenium开发环境搭建图文教程
2017/08/11 Python
scrapy爬虫完整实例
2018/01/25 Python
Python多进程写入同一文件的方法
2019/01/14 Python
Python3 无重复字符的最长子串的实现
2019/10/08 Python
python实现打砖块游戏
2020/02/25 Python
pandas 数据类型转换的实现
2020/12/29 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
美国顶级奢侈茶:Mighty Leaf Tea(美泰茶)
2016/11/26 全球购物
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
Brasty罗马尼亚:购买手表、香水、化妆品、珠宝
2020/04/21 全球购物
一份婚庆公司创业计划书
2014/01/11 职场文书
经理任命书模板
2014/06/06 职场文书
小学生民族团结演讲稿
2014/08/27 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
教师网络培训心得体会
2016/01/09 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
浅谈redis整数集为什么不能降级
2021/07/25 Redis
CSS作用域(样式分割)的使用汇总
2021/11/07 HTML / CSS