python-3.x - 是否必须在 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 门户中发布了同样的问题,但没有得到足够的回应)。
解决方案
如您所见,我没有序列化程序,并且代码运行良好。那么这是一个好习惯吗?
它是强制性的吗?不,但它通常很方便。
ViewSet
顾名思义,A是一组视图。所以通常它并不意味着只实现一个功能,而是几个功能。例如检索记录列表、检索记录的详细信息、创建新记录、更新现有记录以及删除现有记录。我们不需要序列化器,但它需要编写大量代码。如果您稍后在模型中添加一个字段,则需要更新其中大部分功能,因此需要更多的努力。
序列化器是一种工具,通常用于定义模型与其序列化表示之间的双向映射。因此,它可以更方便地从模型对象中检索数据以及创建和更新此类对象。因此,您可以指定映射的工作方式,但您不需要自己实现这三个功能,或者至少大部分逻辑都被抽象掉了。
因此,使用序列化程序意味着减少工作量,并使软件不易出错。
推荐阅读
- python - pynput 无法识别小键盘上的键
- bash - 根据最后一个字符串对行进行排序并删除除一行之外的所有行?
- robotframework - 将只有 `__new__` 的 Python 类导入机器人框架
- c# - 从下拉列表中填充
- html - Visual Studio 2017 不断重新格式化我的代码,这让我抓狂
- java - Spark 查找连续的时间范围
- reactjs - FormSpy-订阅脏的onChange未在输入字段中显示值
- python - 如何从一个类中显示连续计算的函数值?
- php - php 不回显 POST 数据
- spring - Spring:方法不允许返回错误代码 403(禁止)而不是 405