Prepara tu proyecto Django para gestionar usuarios de forma personalizada
Este es otro mimi-curso/conjunto de post/llámale como quieras sobre un tema. En este caso hablaremos de Django y como preparar tu proyecto para gestionar usuarios
Lo que te voy a contar no es obligatorio hacerlo desde el inicio de tu proyecto pero sí que es muy recomendable porque te evitarás problemas en la gestión de las actualizaciones y la exportación de los cambios (migrate - makemigrations)
¿Qué cambios hay que realizar?
En resumen lo que tienes que hacer es indicarle a Django que vas a gestionar usuarios por lo que tienes que configurar el método de autenticación y las entidades que vas a utilizar.
Probablemente si estás en el comienzo de tu proyecto, no tendrás claro todos los atributos de tus usuarios. Esto no es ningún problema ya que, si dejas la estructura/configuración realizada, podrás añadir atributos en el futuro sin problema!
¿Cómo lo hacemos?
Vaamos al grano entonces. Hoy te explicaré como preparar tu proyecto para que, cuando te toque, puedas gestionar los usuarios de forma personalizada
Configuraciones de aplicación
Tenemos que indicarle a Django que vamos usar un método de autenticación personalizado. Esto lo realizamos directamente en el fichero settings.py.
# Esto ya lo deberías tener puesto, pero te lo recuerdo.
# Deberás "registrar" tu aplicación Django en el proyecto
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"TU_APLICACION",
]
# Lo que tenemos que añadir es lo siguiente
# El nombre del modelo deberás mantenerlo en todos los pasos!
AUTH_USER_MODEL = "TU_APLICACION.CustomUserModel"
Como veis en el ejemplo, en mi caso he definido como autenticación el model custom "CustomUserModel". Tendré que mantener este nombre todo el proceso ya que si no, tendremos errores de definición
Activar y configurar zona de administración
Tendremos que habilitar la zona de administración de Django.
No soy muy fan de este paso ya que tienes que "exponer" a todo el mundo urls potenciales de ataque (como por ejemplo el wp-login de wordpress...). No hay problema!, lo podemos solucionar con una configuración rápida en Nginx para bloquear el acceso.
Para activar esta zona, la definimos en el fichero "urls.py" del proyecto (no de la aplicación):
from django.contrib import admin
from django.urls import include, path
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# Habilitamos en /admin, la zona de administración
path("admin/", admin.site.urls),
#Aquí tendrás las urls de tus aplicaciones diferentes
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Ahora que tenemos la administración activada, debemos indicarle a Django qué modelos queremos que integre para su gestión. En nuestro caso añadiremos el "CustomUserModel". Lo haremos en el fichero admin.py de tu aplicación:
from django.contrib import admin
# Register your models here.
from interestCompound.models import CustomUser
# Register new user models
admin.site.register(CustomUser)
Y hasta aquí el primer paso de este mini-curso. Con lo que hemos visto hoy tenemos preparado nuestro proyecto Django para adminitir un método de autenticación nuevo y una gestión de usuario personalizada