template register page how from create contrib authenticate auth django django-authentication django-users

register - El objeto django-user personalizado no tiene el atributo ''has_module_perms''



how to create login in django (3)

Creo que a tu modelo le faltan algunos atributos como ''has_module_params'' ... Intenta agregar lo siguiente

class MyUser(AbstractBaseUser): ... ... def has_perm(self, perm, obj=None): return self.is_superuser def has_module_perms(self, app_label): return self.is_superuser

Mi modelo de usuario personalizado para iniciar sesión por correo electrónico:

class MyUser(AbstractBaseUser): id = models.AutoField(primary_key=True) # AutoField? is_superuser = models.IntegerField(default=False) username = models.CharField(unique=True,max_length=30) first_name = models.CharField(max_length=30, default='''') last_name = models.CharField(max_length=30, default='''') email = models.EmailField(unique=True,max_length=75) is_staff = models.IntegerField(default=False) is_active = models.IntegerField(default=False) date_joined = models.DateTimeField(default=None) # Use default usermanager objects = UserManager() USERNAME_FIELD = ''email'' REQUIRED_FIELDS = [''username''] class Meta: db_table = ''auth_user''

Para lo cual, soy capaz de crear con éxito un superusuario. Sin embargo, cuando intento iniciar sesión con el correo electrónico y la contraseña, aparece este error:

''MyUser'' object has no attribute ''has_module_perms''

¿Alguna idea de lo que estoy haciendo mal?


La implementación del usuario no proporciona los métodos obligatorios que se utilizarán con el módulo de administración.

Consulte https://docs.djangoproject.com/en/1.8/ref/contrib/admin/#module-django.contrib.admin .

En su caso, simplemente agregue la mezcla de permisos (PermissionsMixin), como una superclase de su modelo.

from django.contrib.auth.models import PermissionsMixin class MyUser(AbstractBaseUser, PermissionsMixin): # ...

Se describe aquí: https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#custom-users-and-permissions .


Para aquellos que solo están ingresando en noviembre de 2017 y después, no creo que agregar o permitir que su clase herede PermissionsMixin sea ​​la solución, ya que generará más errores ya que usted reinventó la rueda.

Me encontré con el mismo problema esta tarde (4 de noviembre de 2017) al anular el nombre de Username con el Phone Number :

class MyUserManager(BaseUserManager): .. .. def create_superuser(self, phone, password=None): if password is None: raise TypeError("provide password please") myuser = self.model(phone=phone) myuser.set_password(password) myuser.is_admin = True myuser.is_staff = True myuser.save() return myuser

Por lo tanto, http://127.0.0.1:8000/admin/ no funcionaba y el object has no attribute ''has_module_perms'' subida continuada object has no attribute ''has_module_perms'' error de object has no attribute ''has_module_perms'' , la siguiente es cómo arreglé el mío:

class MyUser(AbstractBaseUser): .. .. def get_full_name(self): pass def get_short_name(self): pass @property def is_superuser(self): return self.is_admin @property def is_staff(self): return self.is_admin def has_perm(self, perm, obj=None): return self.is_admin def has_module_perms(self, app_label): return self.is_admin @is_staff.setter def is_staff(self, value): self._is_staff = value

Espero que esto ayude a alguien.