python - 在 django rest 框架中将 python 字典转换为 json 类型
问题描述
这是一个理解问题,而不是代码问题。我使用 DRF 一年了。当我了解序列化程序时,它说有两个步骤。
对于获取请求,序列化程序类的作用是:
- 将复杂的数据类型(如查询集)转换为 Python 数据类型(如字典)。
- 将字典转换为 json 格式,作为响应发送到 api。
我使用打印命令来查看正在发生的一切或使用 shell。我可以看到第一步正在发生,即我可以看到复杂的查询集,并且在序列化之后可以看到查询集的字典。但是在代码中我看不到第二步的发生。虽然 json 格式与 python 字典没有太大区别。我看到的唯一区别是 json 中的双引号而不是单引号。但是,转换仍然需要发生。它是自动发生的还是我在这里遗漏了什么?
我的片段:
我打印的查询集和序列化数据:
在这里,打印的电子邮件是复杂的数据。序列化后它被转换为python字典。但是,进入 postman 的 JSON 数据是这样的。
解决方案
Serializer.data
给你一个实例,rest_framework.utils.serializer_helpers.ReturnDict
它只是一个轻量级的OrderedDict
. OrderedDict
是 Pythondict
专门用于维护键的插入顺序的进一步扩展。由于 JSON 是用于传输数据的基于文本的格式,因此OrderedDict
与序列化程序对应的实例首先被字符串化,然后被发送。由于 JSON 是一种标准化格式,浏览器能够解析字符串表示并漂亮地打印出来。
推荐阅读
- python - 我正在尝试使用 gmail api 在我能够发送的 python 图像中发送 gmail 附件文件,但是在发送文本文件时收到此错误
- javascript - 如何按坐标位置和颜色对对象数组进行排序?
- ios - SwiftUI - 如何在文本视图中更改自定义 SF 符号的颜色?
- docker - 无法加载证书“/etc/ssl/ServerCertificate.crt”:BIO_new_file() 失败(SSL:错误:02001002:系统库:fopen:没有这样的文件或目录
- javascript - 我可以在 componentDidMount 中有条件语句吗?
- .net - .Net core Swagger参数说明使用FromForm时不显示
- python - 如何在 Jupyter notebook 中工作时从虚拟环境中导出 .csv 文件
- python - 熊猫查询是否采用变量名称?
- python - 将属性添加到 Python TypedDict
- python - 在sklearn中覆盖自定义变压器的预测功能