首页 > 解决方案 > 是否必须在 Django 视图集中使用序列化程序?

问题描述

我在 Django 休息框架中使用视图集。我已经看到很多例子表明到处都在使用序列化程序。如果我不想使用序列化程序怎么办,或者如果我没有模型来使用序列化程序怎么办?我只想返回简单的响应数据?

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

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 门户中发布了同样的问题,但没有得到足够的回应)。

标签: python-3.xdjangodjango-rest-frameworkdjango-serializer

解决方案


如您所见,我没有序列化程序,并且代码运行良好。那么这是一个好习惯吗?

它是强制性的吗?,但它通常很方便。

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

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

因此,使用序列化程序意味着减少工作量,并使软件不易出错。


推荐阅读