如何创建具有相同路径但不同HTTP方法DRF的2个操作

时间:2015-02-19 11:33:16

标签: python django django-rest-framework

所以我试图在同一个方法下进行不同的操作,但最后定义的方法是唯一有效的方法,有没有办法做到这一点?

views.py

class SomeViewSet(ModelViewSet):
    ...

    @detail_route(methods=['post'])
    def methodname(self, request, pk=None):
    ... action 1

    @detail_route(methods=['get'])
    def methodname(self, request, pk=None):
    ... action 2

2 个答案:

答案 0 :(得分:1)

您是否尝试根据HTTP请求类型执行操作?喜欢post request execute action 1和get request execute action 2?如果是这种情况,请尝试

def methodname(self, request, pk=None):
    if request.method == "POST":
        action 1..
    else 
        action 2..

答案 1 :(得分:1)

我找到的最合理的方法here

class MyViewSet(ViewSet):
    @action(detail=False)
    def example(self, request, **kwargs):
        """GET implementation."""

    @example.mapping.post
    def create_example(self, request, **kwargs):
        """POST implementation."""

该方法提供了在另一个具有正确值的视图集方法中使用self.action的可能性。