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追加元素到列表的方法
Jul 28 Python
详解Tensorflow数据读取有三种方式(next_batch)
Feb 01 Python
Python KMeans聚类问题分析
Feb 23 Python
python+opencv实现阈值分割
Dec 26 Python
Python函数中不定长参数的写法
Feb 13 Python
python openpyxl使用方法详解
Jul 18 Python
python实现画循环圆
Nov 23 Python
python3的UnicodeDecodeError解决方法
Dec 20 Python
Django 限制访问频率的思路详解
Dec 24 Python
python实现扫雷小游戏
Apr 24 Python
用opencv给图片换背景色的示例代码
Jul 08 Python
python绘制简单直方图(质量分布图)的方法
Apr 21 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地址是否可用的代码
2012/02/19 PHP
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
js中document.write的那点事
2014/12/12 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
js使用xml数据载体实现城市省份二级联动效果
2017/11/08 Javascript
js+css实现打字效果
2020/06/24 Javascript
vue自定义filters过滤器
2018/04/26 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
2019/08/09 Javascript
[04:16]DOTA2英雄梦之声_第09期_斧王
2014/06/21 DOTA
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
python爬取微信公众号文章的方法
2019/02/26 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
PyQt5实现简单的计算器
2020/05/30 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
Ticketmaster德国票务网站:购买音乐会和体育等门票
2016/11/14 全球购物
有针对性的求职自荐信
2013/11/14 职场文书
营销总经理的岗位职责
2013/12/15 职场文书
关于打架的检讨书
2014/01/17 职场文书
期末评语大全
2014/05/04 职场文书
政协调研汇报材料
2014/08/15 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
关于有小孩的离婚协议书
2014/10/26 职场文书
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers