如何解决我如何不让用户使用django-rest-framework来修改其他用户的数据
我正在使用django-rest-framework和通用视图来构建用于简单博客应用程序的API。 我正在使用RetrieveUpdateAPIView更新数据。 默认情况下,如果我有一个由用户1发布的帖子,则用户2可以发送POST请求并能够修改该帖子的数据。我不希望这种情况发生。这是我尝试过的:
class PostUpdateAPIView(RetrieveUpdateAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer
def perform_update(self,serializer):
if self.request.user == self.request.POST.get('user'):
serializer.save(user=self.request.user)
但这不起作用。它不允许其他用户更新帖子,但也不允许同一用户更新帖子。我是一个完整的初学者,所以我还真的不知道如何正确查询。我该怎么做才能使这项工作成功?
解决方法
首先,如果用户1创建一个对象,而用户2要更改与用户1相关的对象的内容,则称为PULL请求而不是POST。因此,如果您想限制用户更改彼此的内容,则可以在“ PostSerializer”中覆盖update()方法。 您可以这样做:
def update(self,instance,validated_data):
user_id = self.request.user_id
if instance.user_id != user_id:
# Raise any exceptions
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。