【发布时间】:2021-02-26 05:16:30
【问题描述】:
我知道,我可以通过 Django 视图集为任何方法返回单个对象。但是我可以通过 API 返回多个对象吗? 我有这样的事情:
class SomeViewSet(viewsets.ModelViewset):
queryset = SomeModel.objects.all()
serializer_class = SomeDataSerializer
filter_backends = [DjangoFilterBackend,]
permission_classes = (AllowAny,)
@action(methods=['GET'], detail=False, url_path='some_path')
def any_function(self, request):
queryset = self.filter_queryset(self.get_queryset())
result = any_function(args)
return Response(result, status=status.HTTP_200_OK)
任何函数定义为:
def any_function(args):
...
do something with args here and save it as result.
...
return result
这工作非常顺利,我在这里没有任何问题。 但是我可以这样做吗:
def any_function(args):
result = some processing of args
next_result = another processing of args
return result, next_result
仍然可以在 API 端点中获取响应,但现在是针对两个不同的数据。 还有如果 result 和 next_result 是两个不同的 JSON 对象呢?
【问题讨论】:
-
将两者放在一个列表中,其在 json 中的等价物是一个数组。因此,您可以将它们作为数组发送给客户端。
-
我应该在视图集外部还是内部的函数中执行此操作?我也可以在前端使用 JS 分别提取这些结果吗?
-
any_function的第二个示例很好,即使在序列化为 json 时将元组转换为数组。您可以通过索引来访问这两个对象,就像在 JavaScript 中通常索引一样。 -
好的,谢谢,我试试看。
标签: python django rest django-rest-viewsets