the*_*rit 1 python django serialization django-rest-framework
我不知道这是问这个问题的合适平台。我最近遇到了 Django rest 框架。我在我的一个项目中使用 django。我想使用 DRF 作为我的项目的 api 客户端。我遇到了这个术语序列化模型实例和序列化器。我浏览了DRF 教程,但我仍然不知道它是如何工作的。我的问题是:
1.为什么要使用序列化器?他们服务的目的是什么?
2.使用序列化器还能做什么?
3.序列化器是如何工作的?
互联网上可能有很多关于此的参考资料,但我想要一个简单易懂的答案。谢谢!!
以一种非常普遍的方式:
想象一下,您想邀请您的朋友喝杯咖啡。要通知您的朋友,您可以发短信“什么:咖啡,时间:12 小时,地点:拐角处的高档咖啡吧”。这篇文字是你对你的想法的连载。
DRF 为您的 Django 模型执行此操作。
假设您有一个 JS 客户端不(想要)了解您的 DB 或 Django 模型。您将 Django 对象序列化为 JSON,以便以 JS 兼容的方式提供该数据:
data = {
"address": {
"street": "Fancy Street 1b"
}
};
Run Code Online (Sandbox Code Playgroud)
DRF 提供了一种将 Django 模型实例转换为 JSON(或其他格式)的简单方法。这就是序列化程序所做的。他们还提供反序列化您的 JS 前端发送回您的服务器的内容。
您可以添加更多在序列化时计算的字段。例如,除了为相关对象添加简单的 ID,您还可以序列化相关对象并将它们嵌套添加到 JSON(或 XML 或任何格式)中。
您还可以添加仅在前端需要的某些视图的字段,例如与分页等相关的内容。
对于 python,从 python 到 JSON 的最简单的序列化程序是使用 python 字典并简单地从 python 键创建字符串键,将 Django 布尔值转换为true和false字符串,将 pythonNone转换为null等。
对于更复杂的翻译,您可能需要添加自己的逻辑。例如,像解析 Django 模型上的相关对象引用。或者将日期对象格式化为 ISO 标准字符串(带时区)、本地化(十进制)数字、本地化文本等。