我遇到了一些奇怪的问题user.has\烫发始终返回true,即使表中的权限是确定的。
也许有人以前有过这样的经历?
只有在最新版本中才有类似的问题
测试显示问题如下:
import django
import datetime
django.setup()
from django.contrib.auth.models import User
u=User.objects.get(pk=177)
print("version %s" % str(django.VERSION))
print("1: %s" %str(u.has_perm('not_show_tos')))
from django.contrib.auth.models import Permission
permissions = Permission.objects.filter(user=u)
sorted_list_of_permissions = sorted(list(permissions))
print("2:%s " % str("not_show_tos" in sorted_list_of_permissions));
for i in sorted_list_of_permissions:
print( str(i.codename))
print("%s" %str(u.has_perm(i.codename)))
print("\n")
p=Permission.objects.get(codename='not_show_tos');
print("4 %s " % str(p))
print("5 %s " % str(p in sorted_list_of_permissions))
print("6 %s " % str(u.has_perm(p)))
试验结果
python3 /tmp/test.py
signals init done.
version (2, 0, 6, 'final', 0)
1: False
2:False
not_show_tos
False
4 sessions | session | Not Show Tos Page
5 True
6 False