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 相关文章推荐
linux下python使用sendmail发送邮件
May 22 Python
python3.4实现邮件发送功能
May 28 Python
python使用Turtle库绘制动态钟表
Nov 19 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
Feb 25 Python
将pip源更换到国内镜像的详细步骤
Apr 07 Python
Python使用MyQR制作专属动态彩色二维码功能
Jun 04 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 Python
python实现飞行棋游戏
Feb 05 Python
Python random库使用方法及异常处理方案
Mar 02 Python
python实现测试工具(二)——简单的ui测试工具
Oct 19 Python
Python如何急速下载第三方库详解
Nov 02 Python
Python识别处理照片中的条形码
Nov 16 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中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
深入apache配置文件httpd.conf的部分参数说明
2013/06/28 PHP
PHP Global定义全局变量使用说明
2013/08/15 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
php中通过eval实现字符串格式的计算公式
2017/03/18 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
2013/11/30 Javascript
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
2014/04/20 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
2016/09/24 Javascript
基于jPlayer三分屏的制作方法
2016/12/21 Javascript
详解react-router如何实现按需加载
2017/06/15 Javascript
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
python练习程序批量修改文件名
2014/01/16 Python
gearman的安装启动及python API使用实例
2014/07/08 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
python subprocess pipe 实时输出日志的操作
2020/12/05 Python
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
希腊品牌鞋类销售网站:epapoutsia.gr
2020/03/18 全球购物
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
语文教师个人工作总结
2015/02/06 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
借钱欠条怎么写
2015/07/03 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
关于JavaScript轮播图的实现
2021/11/20 Javascript
浅谈如何保证Mysql主从一致
2022/03/13 MySQL
vue中this.$http.post()跨域和请求参数丢失的解决
2022/04/08 Vue.js