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中的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
Python双精度浮点数运算并分行显示操作示例
Jul 21 Python
Python实现拷贝/删除文件夹的方法详解
Aug 29 Python
详解python中的Turtle函数库
Nov 19 Python
CentOS下Python3的安装及创建虚拟环境的方法
Nov 28 Python
Python从单元素字典中获取key和value的实例
Dec 31 Python
python之验证码生成(gvcode与captcha)
Jan 02 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
Dec 26 Python
详解python环境安装selenium和手动下载安装selenium的方法
Mar 17 Python
Django REST 异常处理详解
Jul 15 Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 Python
Python opencv缺陷检测的实现及问题解决
Apr 24 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生成zip压缩文件的方法详解
2013/06/09 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
PHP 断点续传实例详解
2017/11/11 PHP
PHP与以太坊交互详解
2018/08/24 PHP
struts2+jquery+json实现异步加载数据(自写)
2013/06/24 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
jQuery实现hover合成事件的方法
2015/08/06 Javascript
JavaScript  event对象整理及详细介绍
2016/10/10 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
vue webpack打包优化操作技巧
2018/02/22 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
vue实例的选项总结
2020/06/09 Javascript
微信小程序自定义胶囊样式
2020/12/27 Javascript
用Python进行基础的函数式编程的教程
2015/03/31 Python
Python中super关键字用法实例分析
2015/05/28 Python
python 网络爬虫初级实现代码
2016/02/27 Python
Python urls.py的三种配置写法实例详解
2017/04/28 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
python 删除列表里所有空格项的方法总结
2018/04/18 Python
python实现上传文件到linux指定目录的方法
2020/01/03 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
企业法人授权委托书
2014/04/03 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
2014年街道办事处工作总结
2014/12/11 职场文书
感谢信模板大全
2015/01/23 职场文书
学生乘坐校车安全责任书
2015/05/11 职场文书
疾病证明书
2015/06/19 职场文书
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL