我正在制作一個簡單的房地產應用程式,其中用戶必須分成兩個不同的組。普通用戶和經紀人。我正在使用 Django 管理后端來創建用戶組。我還使用 post_save 信號將所有新用戶分配到常規用戶組。乍一看,它運行良好,在 Django admin 中,它顯示用戶在相應的組中。但是當我嘗試列印 self.request.user.groups 時,值為無。此外,當我嘗試檢查用戶是否有權執行某項操作時,無論我給予視圖的權限如何,我檢查的視圖總是給我 403 Forbidden,無論用戶是否有權限。我分別使用基于類的視圖和 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。
我無法弄清楚我錯在哪里或我做錯了什么,任何幫助將不勝感激!先感謝您!
uj5u.com熱心網友回復:
self.request.user.groups總是列印None:那是[Django-doc],而不是. 經理將使用 列印模型名稱,因此對于命名in ,它會列印:RelatedManager QuerySetNoneModelModelNameapp_name
應用程式名稱。型號名稱.None
您使用以下方式列印專案self.request.user.groups.all():
print(self.request.user.groups.all())
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/456377.html
標籤:django 验证 django-views django-管理员 django-身份验证
