如果django rest框架的响应代码是201(成功创建)

时间:2015-07-10 05:57:41

标签: python django django-rest-framework

我像这样扩展django视图

class UserList(APIView):
    def post(self, etc, etc):
        return Response(serializer.data, status=status=status.HTTP_201_CREATED)

现在,如果帖子回复成功,我想调用其他方法。 我怎么能在同一个类UserList中做到这一点? (或者你有更好的主意吗?)

1 个答案:

答案 0 :(得分:2)

您可以创建一个覆盖PostSuccessMixin方法的dispatch()类。然后,我们将在视图中继承此mixin并调用超级dispatch()。在调用它时,我们将获得正确的DRF响应。然后我们可以检查响应的状态代码是否为201.如果是201,那么我们在这里调用其他方法。最后,我们会在致电超级dispatch()之后返回最初收到的原始DRF回复。

class PostSuccessMixin(object):

    def dispatch(self, request, *args, **kwargs):
        response = super(PostSuccessMixin, self).dispatch(request, *args, **kwargs)
        if response.status_code == 201:
            ...
            call other methods
            ...
        return response

在您的观看中,继承此混音。 views.py

class UserList(PostSuccessMixin, APIView):
    def post(self, etc, etc):
        return Response(serializer.data, status=status=status.HTTP_201_CREATED)