Django auth groups 找不到组并且不给用户权限,不管他们在哪个组
Django auth groups not finding groups and does not give permission to users, regardless of the group in which they are
我正在制作一个简单的房地产应用程序,其中必须将用户分成两个不同的组。普通用户和经纪人。我正在使用 Django 管理后端来创建用户组。我还使用 post_save 信号将所有新用户分配给普通用户组。乍一看,它运行良好,在 Django 管理中,它向我显示用户在相应的组中。但是当我尝试打印 self.request.user.groups 时,值是 None。此外,当我尝试检查用户是否有权执行某些操作时,无论我授予视图的权限如何,无论用户是否具有权限,我检查的视图总是给我 403 Forbidden。我分别使用基于 class 的视图和 PermissionRequiredMixin。
这是我的用户模型:
class DjangoEstatesUser(auth_models.AbstractBaseUser, auth_models.PermissionsMixin):
USERNAME_MAX_LENGTH = 30
username = models.CharField(
max_length=USERNAME_MAX_LENGTH,
unique=True,
)
date_joined = models.DateTimeField(
auto_now_add=True,
)
is_staff = models.BooleanField(
default=False,
)
USERNAME_FIELD = 'username'
objects = DjangoEstatesUserManager()
还有将新用户分配到组的信号:
@receiver(post_save, sender=DjangoEstatesUser)
def create_user_profile(sender, instance, created, **kwargs):
if created:
instance.groups.add(Group.objects.get(name='Users'))
这是我试图针对不同用户限制的一个视图:
class AddEstateView(auth_mixins.LoginRequiredMixin, auth_mixins.PermissionRequiredMixin, views.CreateView):
permission_required = 'auth_permission.add_estate'
template_name = 'main/estates/add_estate.html'
form_class = AddEstateForm
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
def get_success_url(self):
return reverse_lazy('profile details', kwargs={'pk': self.object.user_id})
这些是具有权限的组。
brokers_group
和
users_group.
这些是我的
db_tables
和 auth_permission_table.
我不知道哪里错了或哪里做的不对,如有任何帮助,我们将不胜感激!
提前致谢!
self.request.user.groups
总是打印 None
:那是 RelatedManager
[Django-doc],而不是 QuerySet
。经理将打印带有 None
的模型名称,因此对于名为 ModelName
的 Model
在 app_name
,它打印:
app_name.ModelName.None
您使用 self.request.user.groups.all()
打印项目:
print(self.request.user.groups<strong>.all()</strong>)
我正在制作一个简单的房地产应用程序,其中必须将用户分成两个不同的组。普通用户和经纪人。我正在使用 Django 管理后端来创建用户组。我还使用 post_save 信号将所有新用户分配给普通用户组。乍一看,它运行良好,在 Django 管理中,它向我显示用户在相应的组中。但是当我尝试打印 self.request.user.groups 时,值是 None。此外,当我尝试检查用户是否有权执行某些操作时,无论我授予视图的权限如何,无论用户是否具有权限,我检查的视图总是给我 403 Forbidden。我分别使用基于 class 的视图和 PermissionRequiredMixin。 这是我的用户模型:
class DjangoEstatesUser(auth_models.AbstractBaseUser, auth_models.PermissionsMixin):
USERNAME_MAX_LENGTH = 30
username = models.CharField(
max_length=USERNAME_MAX_LENGTH,
unique=True,
)
date_joined = models.DateTimeField(
auto_now_add=True,
)
is_staff = models.BooleanField(
default=False,
)
USERNAME_FIELD = 'username'
objects = DjangoEstatesUserManager()
还有将新用户分配到组的信号:
@receiver(post_save, sender=DjangoEstatesUser)
def create_user_profile(sender, instance, created, **kwargs):
if created:
instance.groups.add(Group.objects.get(name='Users'))
这是我试图针对不同用户限制的一个视图:
class AddEstateView(auth_mixins.LoginRequiredMixin, auth_mixins.PermissionRequiredMixin, views.CreateView):
permission_required = 'auth_permission.add_estate'
template_name = 'main/estates/add_estate.html'
form_class = AddEstateForm
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
def get_success_url(self):
return reverse_lazy('profile details', kwargs={'pk': self.object.user_id})
这些是具有权限的组。 brokers_group 和 users_group.
这些是我的 db_tables 和 auth_permission_table.
我不知道哪里错了或哪里做的不对,如有任何帮助,我们将不胜感激! 提前致谢!
self.request.user.groups
总是打印 None
:那是 RelatedManager
[Django-doc],而不是 QuerySet
。经理将打印带有 None
的模型名称,因此对于名为 ModelName
的 Model
在 app_name
,它打印:
app_name.ModelName.None
您使用 self.request.user.groups.all()
打印项目:
print(self.request.user.groups<strong>.all()</strong>)