django - 为什么 user.has_perm 返回 false 虽然 request.user.get_all_permissions() 和 request.user.get_user_permissions() 返回权限?
问题描述
嘿,我在 Django 中的许可有点问题。
在我的管理面板中,一切似乎都很好,用户拥有所有需要的权限,但如果我尝试使用 @permission_required 装饰器或 has_perm 测试返回 'false' 这是我的代码:
我的用户模型:
class NewUser(AbstractBaseUser, PermissionsMixin):
"Data base for the user"
userNick = models.CharField(verbose_name='Nick', max_length=50, unique=True,)
userEmail = models.EmailField(verbose_name = 'email adress',max_length=60, unique=True)
userName = models.CharField(verbose_name='Name', max_length=50)
userSurname = models.CharField(verbose_name='Surname', max_length=50, blank=True)
userJoinedDate = models.DateTimeField(verbose_name='Joined date', auto_now=True)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_admin = models.BooleanField(default=False)
USERNAME_FIELD = 'userNick'
REQUIRED_FIELDS = ['userEmail', 'userName', 'userSurname']
objects = UserManager()
...
模型.py:
...
class Comments(models.Model):
photos = models.ForeignKey(UserPhotos, on_delete=models.CASCADE)
comment = models.CharField(max_length=200)
date = models.DateTimeField(auto_now=True)
class Meta:
'''Change plural name'''
verbose_name_plural = 'Comments'
def __str__(self):
return self.comment
...
视图.py:
...
def homeView(request):
# Here is my has perm test.
print(request.user.has_perm('accounts.add_comments')) #Return false.
context = {}
user = request.user
num_visit = request.session.get('num_visits', 0)
request.session['num_visits'] = num_visit + 1
if not user.is_authenticated:
return redirect('instagra:login')
else:
context['user'] = NewUser.objects.filter(pk=user.pk)
context['photos'] = UserPhotos.objects.filter(user=user.pk)
context['num_visits'] = num_visit
return render(request, 'main/home_view.html', context)
...
解决方案
推荐阅读
- angular - 如何使用角度通过状态过滤器计算对象数组
- redirect - 不需要的 WordPress 重定向
- java - 如何将 Firebase 中的数据检索到 Android Studio
- excel - 如果单元格为空或不是有效的日期格式,则获取当前时间
- python - 合并值不完全相同的 Pandas DataFrame
- arrays - 在 Typescript 中转换类变量
- gnuplot - Gnuplot 键:强制不均匀拆分
- protocol-buffers - 如何打开/查看 .proto 文件扩展名
- node.js - Node.js 错误 - 没有这样的文件或目录,打开 '/app/package.json'
- vba - MS Project VBA - 按显示行号迭代