你能在 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
, PUT
、POST
和 DELETE
查看名为 的方法list
、update
、create
和destroy
分别;所以在你的情况下,你需要覆盖 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
我正在构建一个使用 Django Rest Framework 的 Django 聊天应用程序。我创建了一个扩展 ModelViewSet 的 MessageViewSet 以显示所有消息对象:
class MessageViewSet(ModelViewSet):
queryset = Message.objects.all()
serializer_class = MessageSerializer
此聊天应用程序也使用频道,当用户发送 POST 请求时,我想做一些频道相关的事情,但我找不到办法查看发出的请求类型.有什么方法可以访问 ModelViewSet 中的请求方法吗?
Rest Framework viewsets
映射 http 方法:GET
, PUT
、POST
和 DELETE
查看名为 的方法list
、update
、create
和destroy
分别;所以在你的情况下,你需要覆盖 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