Es muy importante que no ejecutes los comandos “makemigrations” o “migrate” antes de completar todos los pasos descritos en este artículo.
Si todo sale como lo planeamos, lo siguiente es dar clic en la liga que aparece en la terminal o también puedes abrir un navegador e ir a http://127.0.0.1:8000/ en donde debe aparecer la página de bienvenida de Django.
Para detener el servidor presiona Ctrl + c en la terminal.
2. Crea La App Users
Django viene por defecto con un modelo de usuario que es el que utiliza para la autenticación.
Nosotros vamos a modificar este modelo creando uno propio que nos permita utilizar la cuenta de Correo Electronico en vez de un Nombre de Usuario.
Ahora es momento de crear una app en la cual vamos a modificar el modelo de usuario que viene por defecto con Django.
1
(my_project)$ python manage.py startapp users
Una vez creada la app, no te olvides de agregarla en INSTALLED_APPS en el archivo settings.py
1
2
3
4
5
INSTALLED_APPS=[...# other apps'users',]
3. Modifica El Archivo users/models.py
A continuación agrega el siguiente codigo al archivo users/model.py. Esto es necesario para hacer “email” el campo por defecto en vez de “username”.
fromdjango.dbimportmodelsfromdjango.contrib.auth.modelsimportAbstractBaseUser,PermissionsMixin,BaseUserManagerclassCustomUserManager(BaseUserManager):def_create_user(self,email,password,first_name,last_name,is_email_verified,**extra_fields):ifnotemail:raiseValueError("Email must be provided")ifnotpassword:raiseValueError("Password must be provided")user=self.model(email=self.normalize_email(email),first_name=first_name,last_name=last_name,is_email_verified=is_email_verified,**extra_fields)user.set_password(password)user.save(using=self.db)returnuserdefcreate_user(self,email,password,first_name,last_name,is_email_verified,**extra_fields):extra_fields.setdefault("is_staff",False)extra_fields.setdefault("is_superuser",False)returnself._create_user(email,password,first_name,last_name,is_email_verified,**extra_fields)defcreate_superuser(self,email,password,first_name,last_name,is_email_verified,**extra_fields):extra_fields.setdefault("is_staff",True)extra_fields.setdefault("is_superuser",True)ifextra_fields.get("is_staff")isnotTrue:raiseValueError("Superuser must have is_staff=True.")ifextra_fields.get("is_superuser")isnotTrue:raiseValueError("Superuser must have is_superuser=True.")returnself._create_user(email,password,first_name,last_name,is_email_verified,**extra_fields)classUser(AbstractBaseUser,PermissionsMixin):email=models.EmailField(db_index=True,unique=True,max_length=254)first_name=models.CharField(max_length=240)last_name=models.CharField(max_length=255)is_email_verified=models.BooleanField(default=False)is_staff=models.BooleanField(default=True)# Requiredis_active=models.BooleanField(default=True)is_superuser=models.BooleanField(default=False)objects=CustomUserManager()USERNAME_FIELD='email'REQUIRED_FIELDS=['first_name','last_name','is_email_verified']classMeta:verbose_name='User'verbose_name_plural='Users'
4. Modifica Settings.py
Ahora es momento de decirle a Django que utilice nuestro modelo como modelo para la autenticación de los usuarios. Agrega el siguiente codigo al archivo settings.py
1
AUTH_USER_MODEL='users.User'
5. Agrega el nuevo modelo a la consola de administración
Como modificamos el modelo del usuario que viene por defecto en Django, ahora lo que debemos hacer es agregar el nuevo modelo a la consola de administración, para eso debemos agregar lo siguiente al archivo “users/admin.py”