這似乎很微不足道,但我無法弄清楚我做錯了什么。我檢查了幾個聽起來相似的 SO 帖子,但問題顯然出在其他地方。
我對我的模型有自定義權限can_key,并且已正確注冊。當我嘗試add將此權限授予新創建的用戶時,它不會被添加。
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Permission
def create_dummy_user(self, username):
username = 'dummy_user'
user = get_user_model().objects.create(username=username, password='asdf4321')
user.save()
user = get_user_model().objects.get(username=username)
permission = Permission.objects.get(codename="can_key")
print(permission)
user.user_permissions.add(permission)
user = get_user_model().objects.get(username=username)
print(f"{user.username} is_active - {user.is_active}")
print(f"{user.username} has perm {permission.codename} - {user.has_perm(permission)}")
return user
這是列印輸出
test_web | main_app | record case | Can key record case
test_web | dummy_user is_active - True
test_web | dummy_user has perm can_key - False
所以創建了用戶并且權限存在/被檢索,但是權限沒有被添加。為什么?
uj5u.com熱心網友回復:
您應該使用字串更改 has_perm() 函式的引數。它的格式是“app_name.codename”。所以你改變下面的代碼
...
print(f"{user.username} has perm {permission.codename} - {user.has_perm('main_app.can_key')}")
...
您應該查看 Django 的權限快取檔案。 點擊回答您的問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/518176.html
標籤:djangodjango 权限
上一篇:為什么我的函式get_absolute_url將我的域合并到我的網站名稱中?
下一篇:Django-聚合成陣列
