13.9. Crear un proyecto Django: autenticar usuarios

Página 67

La autenticación de usuario es un aspecto crucial para cualquier aplicación web que desee proteger ciertos recursos y permitir el acceso solo a usuarios autorizados. En Django, la autenticación de usuarios se ve facilitada por su biblioteca de autenticación incorporada. En esta sección, exploraremos cómo crear un proyecto Django que incluya autenticación de usuario.

Para comenzar, primero necesitamos instalar Django. Esto se puede hacer usando pip, el instalador del paquete Python. En la terminal, simplemente ejecute el comando 'pip install django'. Una vez instalado, podemos crear un nuevo proyecto Django ejecutando 'django-admin startproject myproject'.

Una vez creado el proyecto, necesitamos crear una nueva aplicación para manejar la autenticación del usuario. Esto se puede hacer ejecutando 'autenticación de inicio de aplicación de Python Manage.py' en la raíz del proyecto. Esto creará una nueva carpeta llamada 'autenticación' con varios archivos que se utilizarán para configurar la aplicación de la autenticación.

A continuación, debemos agregar la nueva aplicación a la lista de INSTALLED_APPS en settings.py. Esto permitirá a Django reconocer la aplicación de autenticación e incluir su funcionalidad en el proyecto. La lista INSTALLED_APPS ahora debería incluir 'autenticación'.

A continuación, debemos configurar la autenticación de usuario. Django viene con un sistema de autenticación incorporado que podemos usar. Para eso, necesitamos agregar la siguiente línea al archivo settings.py: 'AUTH_USER_MODEL = 'authentication.User'.

Esto le dice a Django que use el modelo de usuario definido en la aplicación de autenticación para todas las operaciones de autenticación. Ahora necesitamos crear este modelo de usuario. En models.py en la aplicación de autenticación, agregue el siguiente código:

desde django.contrib.auth.models importar AbstractUser

usuario de clase (usuario abstracto):
    aprobar

Esto crea un modelo de usuario que hereda de AbstractUser, un modelo de usuario base que incluye campos como nombre de usuario, contraseña, correo electrónico, nombre, apellido, etc. Podemos agregar campos adicionales si es necesario, pero para este ejemplo, mantengamos las cosas simples.

Ahora, necesitamos crear las vistas para manejar el inicio y cierre de sesión. En views.py en la aplicación de autenticación, agregue el siguiente código:

desde django.contrib.auth importar autenticar, iniciar sesión, cerrar sesión
desde django.http importar HttpResponse
desde django.shortcuts importar render, redirigir

def login_view(solicitud):
    si solicitud.método == 'POST':
        nombre de usuario = solicitud.POST['nombre de usuario']
        contraseña = solicitud.POST['contraseña']
        usuario = autenticar (solicitud, nombre de usuario = nombre de usuario, contraseña = contraseña)
        si el usuario no es Ninguno:
            iniciar sesión (solicitud, usuario)
            devolver redirección ('casa')
        demás:
            devolver HttpResponse('Credenciales no válidas')
    demás:
        devolver render(solicitud, 'autenticación/login.html')

def logout_view(solicitud):
    cerrar sesión (solicitar)
    devolver redirección ('iniciar sesión')

Estas vistas manejan el inicio y cierre de sesión respectivamente. La vista de inicio de sesión comprueba si el método de solicitud es POST. Si es así, intenta autenticar al usuario con el nombre de usuario y la contraseña proporcionados. Si la autenticación es exitosa, el usuario inicia sesión y se le redirige a la página de inicio. Si la autenticación falla, se devuelve una respuesta HTTP con el mensaje "Credenciales no válidas". Si el método de solicitud no es POST, se muestra la página de inicio de sesión.

La vista de cierre de sesión simplemente desconecta al usuario y lo redirige a la página de inicio de sesión.

Ahora necesitamos crear las plantillas de inicio de sesión. Cree una nueva carpeta llamada 'plantillas' en la carpeta de la aplicación de autenticación y dentro de ella cree una nueva carpeta llamada 'autenticación'. Dentro de esta carpeta, cree un nuevo archivo llamado 'login.html' y agregue el siguiente código:

{% extiende 'base_generic.html' %}

{% bloquear contenido %}
  

Iniciar sesión

{% csrf_token %} Nombre de usuario:
Contraseña:
{% bloque final %}

Esta es una plantilla de inicio de sesión simple que amplía la plantilla base_generic.html y reemplaza el bloque de contenido con un formulario de inicio de sesión.

Finalmente, necesitamos agregar las URL para las vistas de inicio y cierre de sesión. En urls.py en la aplicación de autenticación, agregue el siguiente código:

desde la ruta de importación django.urls
de . importar vistas

patrones de URL = [
    ruta('iniciar sesión/', vistas.login_view, nombre='iniciar sesión'),
    ruta('cerrar sesión/', vistas.cerrar sesión_view, nombre='cerrar sesión'),
]

Esto agrega las URL para las vistas de inicio y cierre de sesión, respectivamente. Ahora, si ejecutamos el servidor de desarrollo Django con 'python Manage.py RunServer' y navegamos a 'http://localhost:8000/login', deberíamos ver la página de inicio de sesión y poder iniciar sesión con un usuario existente.

En resumen, autenticación de usuarioos es una parte importante de cualquier aplicación web y Django facilita la implementación de esta funcionalidad. Con el sistema de autenticación integrado de Django, podemos proteger fácilmente los recursos y permitir el acceso solo a usuarios autorizados.

Ahora responde el ejercicio sobre el contenido:

¿Cuál es el proceso para configurar la autenticación de usuario en un proyecto Django?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Siguiente página del libro electrónico gratuito:

6813.10. Creando un proyecto Django: autorización y permisos

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.