调用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)
我像这样扩展 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()
.
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)