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中cPickle用法例子分享
Jan 03 Python
Django自定义插件实现网站登录验证码功能
Apr 19 Python
Python检查和同步本地时间(北京时间)的实现方法
Dec 03 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
Jan 17 Python
python将pandas datarame保存为txt文件的实例
Feb 12 Python
Python Django简单实现session登录注销过程详解
Aug 06 Python
python3图片文件批量重命名处理
Oct 31 Python
python装饰器练习题及答案
Nov 01 Python
tensorflow之变量初始化(tf.Variable)使用详解
Feb 06 Python
适合Python初学者的一些编程技巧
Feb 12 Python
python的列表List求均值和中位数实例
Mar 03 Python
Python能做什么
Jun 02 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中冒号、endif、endwhile、endfor使用介绍
2010/04/28 PHP
php 大数据量及海量数据处理算法总结
2011/05/07 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
NodeJS连接MongoDB数据库时报错的快速解决方法
2016/05/13 NodeJs
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
AngularJS Controller作用域
2017/01/09 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
node实现定时发送邮件的示例代码
2017/08/26 Javascript
基于Vue实现后台系统权限控制的示例代码
2017/08/29 Javascript
python改变日志(logging)存放位置的示例
2014/03/27 Python
Python制作豆瓣图片的爬虫
2017/12/28 Python
python脚本作为Windows服务启动代码详解
2018/02/11 Python
Python中list查询及所需时间计算操作示例
2018/06/21 Python
python 多线程重启方法
2019/02/18 Python
python机器学习库scikit-learn:SVR的基本应用
2019/06/26 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
关于Tensorflow使用CPU报错的解决方式
2020/02/05 Python
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
JINS眼镜官方网站:日本最大的眼镜邮购
2016/10/14 全球购物
大学生个人总结的自我评价
2013/10/05 职场文书
国企干部对照检查材料
2014/08/22 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
简历自我评价优缺点
2015/03/11 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
公司员工手册范本
2015/05/14 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书
nginx常用命令放入shell脚本详解
2021/03/31 Servers
win10搭建配置ftp服务器的方法
2022/08/05 Servers