Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Rest Framework—一个具体的示例,说明何时使用序列化程序类与何时使用模型序列化程序类_Django_Serialization_Django Rest Framework - Fatal编程技术网

Django Rest Framework—一个具体的示例,说明何时使用序列化程序类与何时使用模型序列化程序类

Django Rest Framework—一个具体的示例,说明何时使用序列化程序类与何时使用模型序列化程序类,django,serialization,django-rest-framework,Django,Serialization,Django Rest Framework,我正在学习django rest框架,虽然我了解序列化程序的功能和使用时间,但我无法完全满足对序列化程序和模型序列化程序类的需求。你们中的一位能给我一个具体的现实世界的例子吗 是的,我已经在DRF网站上浏览了好几次教程,但我仍然感觉到模糊性上有一个很好的例子,在回答中需要花费太多的时间,但我想提出一些观点 首先,DRF文档说明: 我们的SnippetSerializer类正在复制Snippet模型中也包含的大量信息。如果我们能让代码更简洁一点就好了 与Django提供表单类和ModelForm类

我正在学习django rest框架,虽然我了解序列化程序的功能和使用时间,但我无法完全满足对序列化程序和模型序列化程序类的需求。你们中的一位能给我一个具体的现实世界的例子吗


是的,我已经在DRF网站上浏览了好几次教程,但我仍然感觉到模糊性

上有一个很好的例子,在回答中需要花费太多的时间,但我想提出一些观点

首先,DRF文档说明:

我们的SnippetSerializer类正在复制Snippet模型中也包含的大量信息。如果我们能让代码更简洁一点就好了

与Django提供表单类和ModelForm类的方式相同,REST框架同时包括序列化程序类和ModelSerializer类

Snippet模型是该示例中使用的模型的名称。因此,正如文档所述,我们可以使用
ModelSerializer
作为快捷方式,而不是再次将相同的字段从模型输入到
序列化器,就像在简单的
表单上使用
ModelForm
一样

但这基本上留下了一个问题:“好吧,那么为什么会有一个简单的序列化程序类?”正如您在评论中指出的那样

在绝大多数情况下,如果您有模型,并且需要序列化/反序列化相关数据(通常是JSON,但不限于),那么
ModelSerializer
就是一种方法。即使需要附加字段、相关序列化程序或任意逻辑,也可以轻松调整
ModelSerializer
。就我个人而言,我从未在我的任何项目中发现
ModelSerializer
不适合与模型相关的数据


但在某些情况下,您可能需要处理不符合模型的数据。此类数据将发布到DRF视图,并由
序列化程序处理。例如,发送邮件消息、设置芹菜任务、向会话添加数据,以及许多其他根本不涉及模型的情况。

我想改变我的问题,是否有一个真实的示例,说明不应该使用模型序列化程序,而应该使用序列化程序类?当我们序列化不是来自数据库的数据时?看这就是我所说的,这实际上是非常有价值的。感谢you@amazingCarrotSoup我很高兴这有帮助。