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调用浏览器并打开一个网址的例子
Jun 05 Python
python字典基本操作实例分析
Jul 11 Python
在Django的URLconf中使用多个视图前缀的方法
Jul 18 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 Python
浅谈python数据类型及类型转换
Dec 18 Python
python中int与str互转方法
Jul 02 Python
Python使用pickle模块储存对象操作示例
Aug 15 Python
pycharm在调试python时执行其他语句的方法
Nov 29 Python
解决Python下imread,imwrite不支持中文的问题
Dec 05 Python
Django Rest framework之认证的实现代码
Dec 17 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
Jun 27 Python
Django xadmin安装及使用详解
Oct 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
PHP页面实现定时跳转的方法
2014/10/31 PHP
PHP接收App端发送文件流的方法
2016/09/23 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
PHP调用Mailgun发送邮件的方法
2017/05/04 PHP
thinkPHP事务操作简单案例分析
2019/10/17 PHP
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
2016/05/10 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
js select下拉联动 更具级联性!
2020/04/17 Javascript
如何利用JS将手机号中间四位变成*号
2020/09/29 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
如何利用nodejs实现命令行游戏
2020/11/24 NodeJs
python根据距离和时长计算配速示例
2014/02/16 Python
Python代码的打包与发布详解
2014/07/30 Python
浅谈Python的异常处理
2016/06/19 Python
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
python Timer 类使用介绍
2020/12/28 Python
美国女士泳装店:Swimsuits For All
2017/03/02 全球购物
设计部经理的岗位职责
2013/11/16 职场文书
公益活动策划方案
2014/01/09 职场文书
气象学专业个人求职信
2014/03/15 职场文书
网络技术专业求职信
2014/05/02 职场文书
优秀护士事迹材料
2014/12/25 职场文书
运动会加油稿
2015/07/22 职场文书
初中生活随笔
2015/08/15 职场文书
放假通知怎么写
2015/08/18 职场文书
python如何获取网络数据
2021/04/11 Python
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
spring boot中nativeQuery的用法
2021/07/26 Java/Android