#django #user-permissions #django-permissions
#django #пользователь-разрешения #django-разрешения
Вопрос:
Привет, у меня небольшая проблема с моим разрешением в 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()
…
models.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
...
views.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)
...
Комментарии:
1. Является ли эта модель пользователя по умолчанию, активен ли пользователь и как вы проверяете разрешения в admin
2. Это мой собственный пользователь create. Я обновил свой код выше. Пользователь активен, а также имеет разрешение персонала. Я назначаю разрешение из панели администратора (теперь я думаю, что где-то там проблема.)
3. Я проверил свое разрешение пользователя следующим образом: print(request.user.get_all_permissions()) возвращает accounts.add_comment . print(request.user.get_user_permissions()) так же, как и выше. print(request.user.has_perms(‘accounts.add_comment’)) возвращает false . print(request.user.has_perm(‘accounts.add_comment’)) и false . Я немного смущен.