如何在 Django REST Framework 中创建特定的逻辑密集型 API 端点

Jim*_*Jim 2 python django django-rest-framework

我有一个 CustomEvent 模型,并且我添加了一个非常简单的通用 ListAPIView 类来拥有标准 API 端点,包括覆盖get_queryset以利用查询字符串。这是那个类:

class EventList(generics.ListAPIView):
    serializer_class = EventSerializer
    queryset = CustomEvent.objects.all()

    def get_queryset(self):
        # custom get_queryset here
        pass
Run Code Online (Sandbox Code Playgroud)

除了/events具有基本功能的端点之外,我还希望有一个非常逻辑重的端点,它也返回CustomEvent对象,但除了过滤查询集之外还有一些更高级的逻辑。也许它会对用户没有接触过的后端执行一些检查,过滤和转换从 API 返回的数据。我不清楚如何使用 DRF 设置这样的 API 端点……完成此操作的正确方法是什么?

arg*_*aen 5

额外的行动是你所需要的。您可以指定一个名为 process_event 的自定义端点作为 list_route 操作并定义您的复杂视图。

定义好之后就可以在/events/process_event下访问了。您可能还想为您的自定义操作指定一个自定义序列化程序,我提供的链接中的 set_password 示例就是一个很好的示例。

而且,如果这些工作处理起来很繁重,我建议您使用 celery。

类似问题:使用 DRF 在 RESTful API 中实现 RPC