【发布时间】:2018-12-27 09:33:28
【问题描述】:
我想在 Django 中编写自己的权限,我的意思是我想准确定义用户可以做什么或不能做什么,我已经阅读了这个enter link description here 但似乎 change_task_status 是在 Django 中预定义的。例如,我想准确定义用户可以访问视图的 get 方法,并且只能从数据库表的第 1 行到第 8 行访问,等等。我该怎么做?
编辑:
首先,我使用 Django 的 auth_permission 表中的默认权限执行此操作,对于每个模型,它都会在此表中创建添加/查看/更改/删除权限,我知道我可以将其用于我的目的。但我有两个问题,首先我不想使用默认权限类 od Django.contrib,auth 模型,因此我想创建自己的权限表(而不是 auth_permissions 我有 mapp_permissions)现在这对我来说是个问题新表没有填充默认权限,所以我需要自己定义权限我的意思是我必须说出 add_modelname 的含义,并且在我这样做之后我需要定义一些新权限,例如对于一个模型:user_x 有权限 view_modelname,用户也有这个权限,但是从存储在数据库 user_y 中的这个模型的数据中,只能看到 db 表的 1 到 8 的记录,而不是全部
编辑 2:
正如您在权限类评论中看到的那样:“它是 目前不可能说“玛丽只能改变有 某些状态或发布日期。"" 我怎样才能使它成为可能? 此外,Django 文件中应该有一个代码为机器定义,例如表中的 add_user 意味着什么
【问题讨论】:
-
and just from row 1 to 8 of the database table是什么意思?上面的示例向您展示了一个用于编写权限的模板。您在模型上定义权限,然后检查该用户是否具有使用该功能的必要权限?您可以通过仪表板或迁移将权限应用于用户(我假设为第 1 到 8 行)。 -
请检查我的编辑
-
@Annabelle 不确定您为什么不想使用 Django 身份验证权限表,但如果您确实想使用自定义权限表,则不能再使用模型 META 中定义的常用权限类,因为这些是在迁移期间添加到 auth 权限表中的。您将不得不推出自定义解决方案。至于您对第 1-8 行的第二个要求,这也是一个奇怪的要求,不属于当前权限框架提供的权限类型,但是由于您无论如何都会推出新的逻辑,您也可以在你自己的
-
@Annabelle 我的意思是,您可以编写一个 DRF 权限类来检查用户是否有权更改特定状态的对象。检查可以是用户是管理员还是普通用户。但话又说回来,如果您需要细粒度,您可以为权限创建一个单独的类并根据需要定义尽可能多的权限。本质上,我的意思是您可以让它们与原始权限框架并排工作,而不是替换它
-
@Annabelle 您应该将所有模型导入包的
__init__.py文件中。看看这个stackoverflow.com/questions/5534206/…
标签: python django django-rest-framework