你能在 DRF ModelViewSet 中获取请求方法吗?

Can you get the request method in a DRF ModelViewSet?

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

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

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

Rest Framework viewsets 映射 http 方法:GET, PUTPOSTDELETE 查看名为 的方法listupdatecreatedestroy分别;所以在你的情况下,你需要覆盖 create 方法:

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

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

我们无法获得 'GET' 请求,因为 ModelViewSet 继承自 mixins.CreateModelMixin,mixins.RetrieveModelMixin,mixins.UpdateModelMixin, mixins.DestroyModelMixin、mixins.ListModelMixin、GenericViewSet 这些 mixins 所以我们可以覆盖列表方法

而不是 'GET' 请求

enter image description here