我正在学习django rest框架,虽然我理解了序列化程序的作用以及何时使用它,但我无法完全满足对序列化程序和模型序列化程序类的需求。请问你们其中一个请给我一个具体的现实世界的例子用例吗?
是的我已多次浏览DRF网站上的教程,但我仍然遇到模糊不清
答案 0 :(得分:2)
DRF tutorial上有一个很好的例子,在答案中需要花费太多时间,但我想提出一些观点。
首先,DRF文档解释了:
我们的SnippetSerializer类正在复制Snippet模型中包含的大量信息。如果我们能够使代码更简洁,那就太好了。
与Django提供Form类和ModelForm类的方式相同,REST框架包括Serializer类和ModelSerializer类。
Snippet模型是该示例中使用的模型的名称。正如文档所说,我们可以使用Serializer
作为快捷方式,而不是再次键入模型中的相同字段到ModelSerializer
,我们可以使用{{1}简单地ModelForm
。
但是这会将问题基本上保留为“好的,那么为什么会有一个简单的Serializer类?”,正如您在评论中指出的那样。
在绝大多数情况下,如果您拥有模型并且需要序列化/反序列化相关数据(通常是JSON但不限于此),那么Form
就是可行的方法。即使需要额外的字段,相关的序列化器或任意逻辑,也可以轻松调整ModelSerializer
。就我个人而言,ModelSerializer
不适合与模型相关的数据,我个人从未发生过这种情况。
但是可能存在需要处理不遵守模型的数据的情况。这些数据将被发布到DRF视图,ModelSerializer
将处理它们。这种情况可能是例如发送邮件消息,设置Celery任务,向会话添加数据,以及许多其他不涉及模型的情况。