调用django rest framework的其他方法响应码为201(创建成功)

call other methods if django rest framework's response code is 201 (successfully created)

我像这样扩展 Django 视图

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

现在我想在 post 响应成功时调用其他方法。 我怎样才能在同一个 class 用户列表中做到这一点? (或者你有更好的主意?)

您可以创建一个 PostSuccessMixin class 来覆盖 dispatch() 方法。然后,我们会在我们的view中继承这个mixin,调用super的dispatch()。在调用它时,我们将得到正确的 DRF 响应。然后我们可以检查响应的状态码是否为201。如果是201,那么我们在这里调用其他方法。最后,我们 return 在调用 super 的 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

在你看来,继承这个mixin。 views.py

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