Django Rest Framework - 何时使用序列化器类与模型序列化器类的具体示例

标签 django serialization django-rest-framework

我正在学习 django rest 框架,虽然我了解序列化器的作用以及何时使用它,但我无法完全满足对序列化器和模型序列化器类的需求。你们中的一个能给我一个具体的现实世界示例用例吗?

是的,我已经多次浏览了 DRF 网站上的教程,但我仍然感到模糊

最佳答案

DRF tutorial 上有一个很好的例子并且在答案中涵盖太多内容,但我想提出几点意见。
首先,DRF 文档解释了:

Our SnippetSerializer class is replicating a lot of information that's also contained in the Snippet model. It would be nice if we could keep our code a bit more concise.

In the same way that Django provides both Form classes and ModelForm classes, REST framework includes both Serializer classes, and ModelSerializer classes.


Snippet 模型是该示例中使用的模型的名称。因此,正如文档所说,与其将模型中的相同字段再次键入 Serializer ,我们可以使用 ModelSerializer作为快捷方式,与我们使用 ModelForm 类似的方式一个简单的Form .
但这基本上使问题成为“好的,那么为什么有一个简单的 Serializer 类?”,正如您在评论中指出的那样。
在绝大多数情况下,您有模型并且需要序列化/反序列化相关数据(通常是 JSON 但不限于),然后是 ModelSerializer是要走的路。即使需要额外的字段、相关的序列化程序或任意逻辑,ModelSerializer可以很容易地调整。就我个人而言,我从未想过我的任何项目ModelSerializer不适用于与模型相关的数据。
但在某些情况下,您可能需要处理不符合模型的数据。此类数据将被发布到 DRF View 和 Serializer会处理他们。例如,此类情况可能是发送邮件消息、设置 Celery 任务、向 session 添加数据以及许多其他根本不涉及模型的情况。

关于Django Rest Framework - 何时使用序列化器类与模型序列化器类的具体示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41450592/

相关文章:

java - 使用 Jackson 与 JSON 进行交互,其中每个类都实现相同的接口(interface)

java - 带 Spring Boot 的 Jackson : control object substitution for specific method

Python 无法导入名称序列

Swift NSURLSession HTTPS 自签名 - 请求永远不会到达服务器

python - 通过 POST 请求返回列表

django - APIView 类和 View 集类之间的区别?

python - 使用 PASSWORD_HASHERS 为 unittest 用户创建一个简单的密码

mysql - Django ORM 查询中的Haversine Python 包

python - 找不到 '' 的反向。 '' 不是有效的 View 函数或模式名称

django - Django 中的 AUTH_PROFILE_MODULE