首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何不让用户使用django-rest-framework修改另一个用户的数据

如何不让用户使用django-rest-framework修改另一个用户的数据
EN

Stack Overflow用户
提问于 2020-09-20 19:46:57
回答 1查看 29关注 0票数 0

我正在使用django-rest-framework和通用视图为一个简单的博客应用程序构建API。我正在使用RetrieveUpdateAPIView更新数据。默认情况下,如果我有一个用户1发布的帖子,用户2可以发送一个post请求,并能够修改该帖子的数据。我不希望这种情况发生。这是我尝试过的:

代码语言:javascript
运行
复制
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)

但这是行不通的。它不允许其他用户更新帖子,但也不允许同一用户更新帖子。我是一个完全的初学者,所以我还不知道如何正确地查询。我能做些什么来让它工作呢?

EN

Stack Overflow用户

发布于 2020-09-21 02:26:27

首先,如果用户1创建了一个对象,而用户2想要更改与用户1相关的对象的内容,则称为PULL request,而不是POST。所以,如果你想限制用户改变彼此的内容,你可以在'PostSerializer‘重写update()方法。你可以像这样做smth:

代码语言:javascript
运行
复制
    def update(self, instance, validated_data):
       user_id = self.request.user_id 
       if instance.user_id != user_id:
             # Raise any exceptions
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63978644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档