在 Django viewset 中必须使用序列化程序吗?

Is it mandatory to use serializer in Django viewset?

我在 Django 休息框架中使用视图集。我见过很多例子,到处都在使用序列化程序。如果我不想使用序列化器怎么办,或者如果我没有使用序列化器的模型怎么办?而我只想return简单的响应数据?

下面只是我如何使用它的一个例子。

from rest_framework.response import Response
from rest_framework import status, viewsets

class UserViewSet(viewsets.ViewSet):

    def create(self, request):
        data = {'name': 'Shiv', 'email':'example@gmail.com'}
        return Response(data, status=status.HTTP_201_CREATED)

如您所见,我没有序列化程序,但代码运行良好。那么这是一个好的做法吗?

(我在 Code Review 门户中发布了相同的问题,但没有得到足够的回复)。

As you can see, I don't have a serializer and the code works perfectly fine. So is this a good practice?

是强制性的吗? 没有,但经常方便

A​​ ViewSet,顾名思义,就是一组视图。所以通常它并不意味着只实现一个功能,而是多个功能。例如检索记录列表、检索记录的详细信息、创建新记录、更新现有记录以及删除现有记录。我们不需要序列化程序,但它需要编写大量代码。如果您以后向模型中添加一个字段,则需要更新其中大部分功能,因此需要付出更多努力。

序列化器是一种工具,通常用于定义模型及其序列化表示之间的双向 映射。因此,它可以更方便地从模型对象 检索 数据以及 创建 更新 这样的目的。您因此 指定 映射的工作原理,但您不需要自己实现这三个功能,或者至少大部分逻辑被抽象掉了。

因此使用序列化程序是为了减少工作量,并使软件更不容易出错。