首页 > 解决方案 > 你能在 DRF ModelViewSet 中获取请求方法吗?

问题描述

我正在构建一个使用 Django Rest Framework 的 Django 聊天应用程序。我创建了一个扩展 ModelViewSet 以显示所有消息对象的 MessageViewSet:

class MessageViewSet(ModelViewSet):
    queryset = Message.objects.all()
    serializer_class = MessageSerializer

这个聊天应用程序也使用 Channels,当用户发送 POST 请求时,我想做一些与频道相关的事情,但我找不到查看发出哪种请求的方法。有什么方法可以访问 ModelViewSet 中的请求方法吗?

标签: djangopostdjango-modelsdjango-rest-frameworkdjango-rest-viewsets

解决方案


Rest Frameworkviewsets将 http 方法:GETPUTPOST和映射到分别DELETE名为listupdatecreate和的查看方法destroy;因此,在您的情况下,您需要覆盖该create方法:

class MessageViewSet(ModelViewSet):
    queryset = Message.objects.all()
    serializer_class = MessageSerializer

    def create(self, request):
        print('this is a post request', request)
        ...

推荐阅读