Implementa un sistema de login en Django: guía fácil

| Última modificación: 4 de junio de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

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!

Alberto Casero

Alberto Casero es CTO en Watium, Fundador de Kas Factory & Coordinador del Bootcamp en Desarrollo Web.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado