【发布时间】:2017-06-23 03:03:39
【问题描述】:
我有一个群组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 Admin 的帮助下,我已将用户添加到组 EuropartsBuyer。
当我在另一个视图中使用以下代码时
if request.user.has_perm('can_add_cost_price'):
do something
结果应该是True,但它显示的是False。因此,if 子句下的代码不会运行。
我已经在 Django shell 中导入了当前登录的用户,当我再次测试权限时它显示为 False。
我在这里做错了什么?
【问题讨论】:
-
你检查 request.user 是否是 AnonymousUser 实例吗?
-
@ThulasiRam 是的。我必须登录才能访问该特定视图。
-
我明白了,但是如果您使用 DRF 并删除了身份验证类,尽管您已登录..在请求中用户将是匿名的。因此,您可以在检查权限之前先尝试打印 request.user ,这样您就可以确定了。 @MiniGunnR
-
我做到了。用户已登录。
-
我忘记使用应用标签了。现在它正在工作。
if request.user.has_perm('europarts.can_add_cost_price').
标签: django permissions django-users django-permissions