首页 > 解决方案 > 根据用户权限和数据库值改变查询集的 Django 最佳实践

问题描述

我是 Django 新手,只是想找出实现某些业务逻辑的最佳方法。

我代表对多层建筑物中 AV 设备的访问。每层楼由单独的租户租用。每个租户都有一个或多个用户,这些用户可以访问楼层上的一个或多个 AV 设备。有一个租户管理员负责定义每个租户的用户及其设备。

我有三个角色——超级用户、租户管理员和租户用户。

我在数据库中有一组表,它们定义了楼层、楼层上的 AV 对象以及哪些租户可以访问哪些对象。Django 中的这个管理员工作正常。

我现在想在一个简单的前端显示它,以便可以进行以下操作:

在我看来,这一切都可以在一个模板中完成,并带有一些基于视图的逻辑来获取数据。

第一个问题是确定要在视图中生成的正确查询集的最佳方法是什么?我需要同时访问用户权限,然后根据用户类型及其 PK 更改“WHERE”。

第二个问题是如何防止对 AV 资源的非法访问。我不希望有人破解 URL 或 POST 对象以允许他们访问他们不允许访问的对象。因此,必须对用户进行身份验证(这很好),然后检查 PK 以确保该用户可以访问数据库中的对象。

这样做的最佳方法是什么?我只是被用户烫发所吸引,但这似乎是错误的方式。

希望这是有道理的,TIA!

标签: pythondjangoview

解决方案


推荐阅读