Django使用每个用户的受限视图共享数据库

时间:2018-01-03 00:11:04

标签: django python-3.x

我有一个要共享的数据库。如果对象具有特定值,我需要特定用户能够查看和编辑它。没有其他用户可以查看或编辑这些对象。

我想知道应该怎样做才能做到这一点。我不太了解django。我目前正在寻找有关观点的条件。不确定这是否可能,因为我不知道视图上的条件是否可以过滤对象。

如果有人能指出我正确的方向,我会非常感激。

1 个答案:

答案 0 :(得分:1)

您应该使用视图来限制用户可以看到和可以做的事情。例如,要限制用户只能查看由他们创建的列表的列表,请告诉视图中的查询仅获取创建的用户等于请求用户的列表。使用模型视图,您可以修改函数以获取所需的数据。如果您将获取查询集功能更改为仅获取用户是请求用户的位置,则可以获得所需内容。

   def get_queryset(self):
        return self.model.objects.filter(user=self.request.user)

视图是用户获取数据的逻辑,因此您可以在那里设置条件。

对于更新,您在更新视图中请求表单之前进行了验证。 这告诉代码,如果用户请求的对象是由该用户创建的注释,则然后拒绝该权限。

def dispatch(self, request, *args, **kwargs):
    obj = self.get_object()
    if obj.user != self.request.user:
        raise PermissionDenied  # HTTP 403
    else:
        return super(UpdateView, self).dispatch(request, *args, **kwargs)

将这些功能放在视图类中,并确保在模型上包含用户字段。