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脚本将绝对url替换为相对url的教程
Apr 24 Python
python查看FTP是否能连接成功的方法
Jul 30 Python
python实现识别相似图片小结
Feb 22 Python
Python实现抢购IPhone手机
Feb 07 Python
python进行两个表格对比的方法
Jun 27 Python
python opencv判断图像是否为空的实例
Jan 26 Python
python  logging日志打印过程解析
Oct 22 Python
TensorFlow命名空间和TensorBoard图节点实例
Jan 23 Python
Django用数据库表反向生成models类知识点详解
Mar 25 Python
接口自动化多层嵌套json数据处理代码实例
Nov 20 Python
python中实现栈的三种方法
Dec 19 Python
Python爬虫 简单介绍一下Xpath及使用
Apr 26 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
全国FM电台频率大全 - 31 新疆维吾尔族自治区
2020/03/11 无线电
PHP define函数的使用说明
2008/08/27 PHP
解析smarty模板中类似for的功能实现
2013/06/18 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
理解Javascript_03_javascript全局观
2010/10/11 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
Angular.js ng-file-upload结合springMVC的使用教程
2017/07/10 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
在vue中添加Echarts图表的基本使用教程
2017/11/22 Javascript
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
详解Vue2.5+迁移至Typescript指南
2019/08/01 Javascript
ElementUI Tree 树形控件的使用并给节点添加图标
2020/02/27 Javascript
Python中optparse模块使用浅析
2015/01/01 Python
Python使用matplotlib实现绘制自定义图形功能示例
2018/01/18 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
flask中过滤器的使用详解
2018/08/01 Python
Python流程控制 if else实现解析
2019/09/02 Python
python实现简易学生信息管理系统
2020/04/05 Python
python的pyecharts绘制各种图表详细(附代码)
2019/11/11 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
幼儿园教师培训方案
2014/02/04 职场文书
国培远程培训感言
2014/03/08 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
档案工作汇报材料
2014/08/21 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang
Python 用户输入和while循环的操作
2021/05/23 Python
pytorch--之halfTensor的使用详解
2021/05/24 Python