如何在Django中编写自己的权限

4
我想在Django中编写自己的权限,我的意思是我想精确地定义用户可以或不可以做什么,我已经阅读了这篇文章enter link description here,但是它似乎change_task_status是Django中预定义的东西。例如,我想精确地定义用户只能访问视图的get方法,只能从数据库表的第一行到第八行访问,类似这样的内容。我该如何做到这一点? 编辑: 首先,我使用Django中auth_permission表中的默认权限进行了此操作,对于每个模型,它都会在此表中创建添加/查看/更改/删除的权限,我知道我可以将其用于我的目的。但我有两个问题,首先我不想使用Django.contrib.auth模型的默认权限类,因此我想创建自己的权限表(而不是auth_permissions,我有mapp_permissions),现在这个新表没有填充默认权限,所以我需要自己定义权限,我的意思是我必须说明add_modelname是什么意思,而且在这样做之后,我需要定义一些新的权限,比如说对于一个模型:user_x有view_modelname的权限,其他用户也有这个权限,但是从存储在数据库中的此模型的数据中,用户y只能看到数据库表的1到8条记录,而不是所有记录。 编辑2: 正如您在权限类注释中所见:“目前无法说“Mary仅可以更改具有特定状态或发布日期的新闻故事。””,我该怎么办?此外,Django文件中应该有一些代码来定义机器,例如在表中的add_user表示什么。

“and just from row 1 to 8 of the database table”是什么意思?上面的示例向您展示了编写权限模板的方法。您可以在模型上定义权限,然后使用该函数检查用户是否具有必要的权限。您可以通过仪表板或迁移将权限应用于用户(我假设是1-8行)。 - Rodney Hawkins
请检查我的编辑 - user907988
@Ken4scholars,我不太理解你回答中的这一部分:“您可以在不删除现有Django权限框架的情况下推出自定义逻辑,该框架在管理界面中运行得非常好”。 - user907988
1
@Annabelle 我的意思是,你可以编写一个DRF权限类,并检查用户是否有更改特定状态对象的权限。检查可以基于用户是否为管理员或普通用户。但是如果您需要细粒度控制,可以为权限创建单独的类,并定义尽可能多的权限。实质上,我的意思是您可以使它们与原始权限框架并行工作,而不是替换它。 - Ken4scholars
1
@Annabelle 你应该在包的 __init__.py 文件中导入所有模型。请看这里 https://dev59.com/D2035IYBdhLWcg3wPdkS - Ken4scholars
显示剩余5条评论
1个回答

3

根据编辑2,我看到您有一些与权限检查相关的业务逻辑,请查看django-rules,我认为这正是您需要的。


谢谢,现在我有一个小问题,你能先帮我解决一下吗?另一个问题是,为了我的项目目的,我使用了一个模型文件夹而不是model.py文件,现在权限类无法自动生成我的模型的添加/更改/删除/更新,我该如何定义在哪里查找我的模型? - user907988
1
你是否在models文件夹的__init__.py中导入了模型? - Haidar Zeineddine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接