我像这样扩展django视图
class UserList(APIView):
def post(self, etc, etc):
return Response(serializer.data, status=status=status.HTTP_201_CREATED)
现在,如果帖子回复成功,我想调用其他方法。 我怎么能在同一个类UserList中做到这一点? (或者你有更好的主意吗?)
答案 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)