Implementar un sistema de login en Django puede parecer un desafío, pero con esta guía fácil y efectiva, estarás listo para agregar autenticación a tu sitio web en poco tiempo. ¡Vamos a ello!
¿Qué es Django y por qué usarlo?
Django es un framework web de alto nivel para el desarrollo de aplicaciones web en Python. Fue diseñado para facilitar el desarrollo rápido y limpio de aplicaciones web, con un enfoque en la reutilización de componentes, la rapidez de desarrollo y la escalabilidad. Una de sus características más destacadas es su sistema de autenticación y autorización, que permite verificar credenciales de usuario y controlar el acceso a diferentes partes de la aplicación.
Una de las grandes ventajas de Django es su “batería incluida”. Esto significa que Django viene con una serie de funcionalidades integradas que cubren las necesidades comunes de las aplicaciones web, como la gestión de usuarios, la administración de contenido y la protección contra amenazas de seguridad comunes. Además, Django sigue el principio DRY (Don’t Repeat Yourself), lo que te permite escribir menos código y mantenerlo de manera más eficiente. Con una comunidad activa y una amplia documentación, Django es una excelente opción para desarrolladores que buscan construir aplicaciones web robustas y seguras de manera rápida y eficiente.
Configuración inicial del login en Django
- Instalación de Django
Primero, asegúrate de tener Django instalado en tu entorno de desarrollo. Puedes instalarlo usando pip:
//login en Django
pip install django
- Crear un nuevo proyecto
Inicia un nuevo proyecto de Django con el siguiente comando:
//login en Django
django-admin startproject mi_proyecto
- Crear una nueva aplicación
Dentro de tu proyecto, crea una nueva aplicación donde implementaremos el sistema de login:
//login en Django
cd mi_proyecto
python manage.py startapp usuarios
Agrega la aplicación usuarios
a la lista de INSTALLED_APPS
en el archivo settings.py
:
//login en Django
INSTALLED_APPS = [
...
'usuarios',
'django.contrib.auth',
'django.contrib.contenttypes',
...
]
Configurando la autenticación en Django
- URLs de autenticación
Django proporciona URLs de autenticación listas para usar. Añádelas en el archivo urls.py
de tu proyecto principal:
//login en Django
from django.urls import path, include
urlpatterns = [
...
path('accounts/', include('django.contrib.auth.urls')),
...
]
- Creando plantillas de autenticación
Django busca plantillas de autenticación en un directorio llamado registration
. Crea las carpetas necesarias y añade la plantilla login.html
:
//login en Django
# mi_proyecto/templates/registration/login.html
{% extends "base_generic.html" %}
{% block content %}
{% if form.errors %}
<p>Tu nombre de usuario y contraseña no coinciden. Inténtalo de nuevo.</p>
{% endif %}
<form method="post" action="{% url 'login' %}">
{% csrf_token %}
<table>
<tr>
<td>{{ form.username.label_tag }}</td>
<td>{{ form.username }}</td>
</tr>
<tr>
<td>{{ form.password.label_tag }}</td>
<td>{{ form.password }}</td>
</tr>
</table>
<input type="submit" value="login">
</form>
<p><a href="{% url 'password_reset' %}">¿Olvidaste tu contraseña?</a></p>
{% endblock %}
- Configurando la redirección después del login
Añade la siguiente configuración en tu archivo settings.py
para redirigir a los usuarios a la página de inicio después de iniciar sesión:
LOGIN_REDIRECT_URL = '/'
Creando usuarios y grupos
- Crear un superusuario
Para gestionar usuarios y permisos, crea un superusuario con el siguiente comando:
//login en Django
python manage.py createsuperuser
Sigue las instrucciones para establecer el nombre de usuario, el correo electrónico y la contraseña.
- Añadir usuarios y grupos en el administrador de Django
Accede a la interfaz de administración de Django (http://127.0.0.1:8000/admin/) y utiliza las secciones de “Usuarios” y “Grupos” para crear usuarios y asignarles permisos.
Restringiendo el acceso a las vistas
- Usando decoradores en vistas basadas en funciones
Para restringir el acceso a una vista, utiliza el decorador login_required
:
from django.contrib.auth.decorators import login_required
@login_required
def mi_vista(request):
...
- Usando mixins en vistas basadas en clases
Para vistas basadas en clases, utiliza LoginRequiredMixin
:
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views import View
class MiVista(LoginRequiredMixin, View):
...
Django es muy flexible y permite personalizar casi todos los aspectos de su sistema de autenticación. Puedes crear tus propias plantillas, formularios y vistas si lo necesitas, pero la configuración por defecto es suficiente para la mayoría de las aplicaciones.
Implementar un sistema de login en Django es una tarea relativamente sencilla gracias a las herramientas y configuraciones que el framework proporciona. Siguiendo estos pasos, tendrás un sistema de autenticación funcional y seguro en tu sitio web.
¿Te gustaría aprender más sobre Django y otras tecnologías web? En el Bootcamp en desarrollo web de KeepCoding, te ofrecemos una formación integral que te preparará para transformar tu vida profesional y acceder a las mejores oportunidades en el sector IT. ¡No pierdas la oportunidad de cambiar tu futuro y apúntate ya!