Logo

Autenticación de Usuarios en Django: Un Tutorial Paso a Paso

En este tutorial, aprenderemos cómo implementar la autenticación de usuarios en Django, un framework de desarrollo web en Python. La autenticación de usuarios es un aspecto fundamental en cualquier aplicación web, ya que nos permite controlar el acceso y proteger la información sensible de los usuarios.

Tabla de contenidos

  1. Introducción
  2. Configuración inicial
  3. Creación del modelo de usuario
  4. Creación de las vistas y templates
  5. Implementación del formulario de registro
  6. Implementación del formulario de inicio de sesión
  7. Protección de vistas y redirección de usuarios no autenticados
  8. Conclusiones

1. Introducción

La autenticación de usuarios en Django se basa en el concepto de User Model, que nos permite administrar la información de los usuarios, como su nombre de usuario, contraseña y otros datos relacionados. Además, Django proporciona un conjunto de vistas, formularios y middleware para facilitar la implementación de la autenticación.

En este tutorial, utilizaremos Django 3.0 y Python 3.7. Asegúrate de tenerlos instalados en tu entorno de desarrollo antes de comenzar.

2. Configuración inicial

En primer lugar, debemos crear un nuevo proyecto de Django y configurar la base de datos. Abre tu terminal y ejecuta los siguientes comandos:

$ django-admin startproject autenticacion
$ cd autenticacion
$ python manage.py migrate

Esto creará un nuevo proyecto llamado "autenticacion" y realizará las migraciones iniciales para configurar la base de datos.

3. Creación del modelo de usuario

El siguiente paso es definir el modelo de usuario personalizado. Abre el archivo autenticacion/models.py y agrega el siguiente código:

from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
    # Agrega los campos adicionales que necesites para tu aplicación
    pass

En este ejemplo, estamos creando un modelo de usuario personalizado llamado CustomUser que hereda de AbstractUser. Puedes agregar campos adicionales según tus necesidades.

Luego, debemos indicar a Django que utilice este modelo personalizado como modelo de usuario. Abre el archivo autenticacion/settings.py y agrega la siguiente línea:

AUTH_USER_MODEL = 'autenticacion.CustomUser'

4. Creación de las vistas y templates

Ahora, crearemos las vistas y templates necesarios para el registro y inicio de sesión de los usuarios.

En la carpeta autenticacion, crea una carpeta llamada templates y dentro de ella crea otra carpeta llamada autenticacion. Luego, crea los siguientes archivos de templates:

En la carpeta autenticacion, crea un archivo llamado views.py y agrega el siguiente código:

from django.shortcuts import render, redirect
from django.contrib.auth import login, authenticate
from .forms import RegistroForm, InicioSesionForm

def registro(request):
    if request.method == 'POST':
        form = RegistroForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password1')
            user = authenticate(username=username, password=password)
            login(request, user)
            return redirect('inicio')
    else:
        form = RegistroForm()
    return render(request, 'autenticacion/registro.html', {'form': form})

def inicio_sesion(request):
    if request.method == 'POST':
        form = InicioSesionForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password')
            user = authenticate(username=username, password=password)
            if user is not None:
                login(request, user)
                return redirect('inicio')
            else:
                form.add_error(None, 'Usuario o contraseña incorrectos.')
    else:
        form = InicioSesionForm()
    return render(request, 'autenticacion/inicio_sesion.html', {'form': form})

En este código, estamos definiendo dos vistas: registro y inicio_sesion. Estas vistas se encargan de procesar los formularios de registro e inicio de sesión, respectivamente. Utilizamos los formularios RegistroForm e InicioSesionForm, que crearemos en el próximo paso.

5. Implementación del formulario de registro

Ahora, crearemos el formulario de registro de usuarios. En la carpeta autenticacion, crea un archivo llamado forms.py y agrega el siguiente código:

from django import forms
from django.contrib.auth.forms import UserCreationForm
from .models import CustomUser

class RegistroForm(UserCreationForm):
    class Meta:
        model = CustomUser
        fields = ['username', 'password1', 'password2']

En este código, estamos creando un formulario RegistroForm que hereda de UserCreationForm. Este formulario utiliza el modelo de usuario personalizado CustomUser y muestra los campos de nombre de usuario, contraseña y confirmación de contraseña.

6. Implementación del formulario de inicio de sesión

A continuación, crearemos el formulario de inicio de sesión. En el mismo archivo forms.py, agrega el siguiente código:

from django import forms

class InicioSesionForm(forms.Form):
    username = forms.CharField(max_length=150)
    password = forms.CharField(widget=forms.PasswordInput)

En este código, estamos creando un formulario InicioSesionForm que contiene los campos de nombre de usuario y contraseña.

7. Protección de vistas y redirección de usuarios no autenticados

Ahora que hemos configurado la autenticación de usuarios, podemos proteger las vistas que requieren autenticación. Abre el archivo autenticacion/views.py y agrega el siguiente decorador a la vista que deseas proteger:

from django.contrib.auth.decorators import login_required

@login_required
def vista_protegida(request):
    return render(request, 'autenticacion/vista_protegida.html')

En este ejemplo, hemos decorado la vista vista_protegida con @login_required, lo que significa que solo los usuarios autenticados podrán acceder a esta vista. Si un usuario no autenticado intenta acceder, será redirigido automáticamente a la página de inicio de sesión.

8. Conclusiones

En este tutorial, hemos aprendido cómo implementar la autenticación de usuarios en Django paso a paso. Hemos creado un modelo de usuario personalizado, formular

© Copyright 2024, todos los derechos reservados.