我正在学习
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模型是该示例中使用的模型的名称.因此,正如文档所述,我们可以使用ModelSerializer作为快捷方式,而不是再次键入模型中相同的字段到Serializer,就像我们在简单的Form上使用ModelForm一样.
但是这就把问题基本上留作“好了,那么为什么会有一个简单的Serializer类?”,正如你在评论中指出的那样.
在绝大多数情况下,如果您有模型并且需要序列化/反序列化相关数据(通常是JSON但不限于此),那么ModelSerializer就是您的选择.即使需要额外的字段,相关的序列化器或任意逻辑,也可以轻松调整ModelSerializer.就个人而言,我的任何项目从未发生过ModelSerializer不适合与模型相关的数据.
但是,有些情况下您需要处理不遵守模型的数据.这些数据将被POST到DRF视图,Serializer将处理它们.这种情况可以是例如发送邮件消息,设置Celery任务,向会话添加数据,以及许多其他不涉及模型的数据.