如何从 Django 中的组检查当前用户的权限?
How to check current user's permissions from a Group in Django?
我有一个群组 EuropartsBuyer
和一个名为 Product
的模型。
以下代码向 Product 模型添加权限。
class Meta:
permissions = (
("can_add_cost_price", "Can add cost price"),
)
在我的一个观点中,我有以下代码将此权限添加到该组。
europarts_buyer, created = Group.objects.get_or_create(name='EuropartsBuyer')
add_cost_price = Permission.objects.get(codename='can_add_cost_price')
europarts_buyer.permissions.add(add_cost_price)
在 Django 管理员的帮助下,我已将用户添加到组 EuropartsBuyer
。
当我在另一个视图中使用下面的代码时
if request.user.has_perm('can_add_cost_price'):
do something
结果应该是 True
但它显示 False
。因此,if 子句下的代码不会 运行.
我已经在 Django 中导入了当前登录的用户 shell,当我再次测试权限时它显示 False。
我做错了什么?
试试这个:
if request.user.has_perm('app_name.can_add_cost_price'):
来自docs:
where each perm is in the format 'app_label.permission codename'
当您使用权限组时,您不需要检查用户拥有的每个权限。如果用户是您在 Django 管理中创建的权限组的一部分,只需将“YourGroupName”更改为您在创建组时调用的名称
{% ifequal user.groups.all.0.name "YourGroupName" %}
<div>This is User</div>
{% endifequal %}
我有一个群组 EuropartsBuyer
和一个名为 Product
的模型。
以下代码向 Product 模型添加权限。
class Meta:
permissions = (
("can_add_cost_price", "Can add cost price"),
)
在我的一个观点中,我有以下代码将此权限添加到该组。
europarts_buyer, created = Group.objects.get_or_create(name='EuropartsBuyer')
add_cost_price = Permission.objects.get(codename='can_add_cost_price')
europarts_buyer.permissions.add(add_cost_price)
在 Django 管理员的帮助下,我已将用户添加到组 EuropartsBuyer
。
当我在另一个视图中使用下面的代码时
if request.user.has_perm('can_add_cost_price'):
do something
结果应该是 True
但它显示 False
。因此,if 子句下的代码不会 运行.
我已经在 Django 中导入了当前登录的用户 shell,当我再次测试权限时它显示 False。
我做错了什么?
试试这个:
if request.user.has_perm('app_name.can_add_cost_price'):
来自docs:
where each perm is in the format 'app_label.permission codename'
当您使用权限组时,您不需要检查用户拥有的每个权限。如果用户是您在 Django 管理中创建的权限组的一部分,只需将“YourGroupName”更改为您在创建组时调用的名称
{% ifequal user.groups.all.0.name "YourGroupName" %}
<div>This is User</div>
{% endifequal %}