Autenticación y cierre de sesión en Django
En resumen
Django proporciona un sistema de autenticación integrado que permite gestionar el inicio y cierre de sesión de los usuarios mediante sus vistas, formularios y URLs.
Instrucciones: nuevo proyecto¶
A continuación, selecciona tu plataforma y sigue los pasos indicados para configurar un nuevo proyecto con Django.
Si ya tienes un proyecto
Las siguientes instrucciones están pensadas para configurar un proyecto Django desde cero. Si ya tienes un proyecto Django creado y configurado, no despliegues esta sección y continúa con el siguiente paso del post.
Ver Instrucciones
1. Abrir el símbolo de sistema
Presiona Win+R para abrir la ventana Ejecutar.
Escribe cmd y presiona Enter para abrir el Símbolo del sistema (CMD).
Abrir el símbolo del sistema (CMD)
2. Ir a la ubicación deseada
Una vez que tengas el CMD abierto, usa el comando cd para navegar a la carpeta donde deseas crear tu proyecto. Por ejemplo, si deseas ir a la carpeta Documentos:
cd %UserProfile%\Documents #(1)!
- Ingresa a la carpeta Documentos del usuario actual.
3. Crear la carpeta del proyecto y acceder a ella
Ejecuta el siguiente comando reemplazando mi-proyecto por el nombre deseado:
mkdir //PROJECT// #(1)!
cd //PROJECT// #(2)!
- Crea la carpeta del proyecto
- Ingresa a la carpeta creada anteriormente
4. Crear el entorno virtual
Ejecuta el siguiente comando para crear un entorno virtual en la carpeta del proyecto:
python -m venv .venv #(1)!
- Crea un entorno virtual de Python llamado
.venv.
5. Activar el entorno virtual
Ejecuta el siguiente comando para activar el entorno virtual:
.\.venv\Scripts\activate
Una vez activado, deberías ver (.venv) al comienzo de la línea de comandos.
(.venv) C:\Users\mcherrera\nuevo-proyecto
Ahora tenemos un entorno limpio y listo para trabajar.
6. Instalar Django en el entorno virtual
Una vez que el entorno virtual está activado, instala Django con el siguiente comando:
(.venv) pip install django
7. Generar un nuevo
Con la herramienta django-admin y el comando startproject se puede generar automáticamente la estructura inicial de un nuevo proyecto Django.
(.venv) django-admin startproject _site .
Utilizamos un punto . al final del comando para generar el proyecto en el directorio actual, evitando que Django cree una carpeta adicional con el nombre del proyecto.
8. Archivos del proyecto
Una vez generado, tendrás disponible el archivo manage.py en el proyecto:
mi-proyecto
├── _site
│ ├── __init__.py #(1)!
│ ├── asgi.py #(2)!
│ ├── settings.py #(3)!
│ ├── urls.py #(4)!
│ └── wsgi.py #(5)!
├── .venv #(6)!
└── manage.py #(7)!
- Inicializa el paquete Python del proyecto Django.
- Configura el punto de entrada ASGI para servidores asíncronos.
- Contiene la configuración principal del proyecto Django.
- Define las rutas y URLs del proyecto.
- Configura el punto de entrada WSGI para servidores web tradicionales.
- Contiene el entorno virtual de Python del proyecto.
- Permite administrar el proyecto mediante comandos de Django.
El archivo manage.py permite administrar y ejecutar distintas tareas del proyecto Django, como iniciar el servidor de desarrollo, ejecutar migraciones y crear aplicaciones.
1. Abrir la terminal
Presiona las teclas Ctrl+Alt+T o busca Terminal en tu lanzador de aplicaciones para abrir una nueva Terminal.
Abrir Terminal en Linux
2. Navegar a la ubicación deseada
Una vez que tengas la terminal abierta, usa el comando cd para navegar a la carpeta donde deseas crear el proyecto Django. Por ejemplo, ir a Documentos:
cd ~/Documents
3. Crear la carpeta del proyecto y acceder a ella
Ejecuta el siguiente comando reemplazando mi-proyecto por el nombre que deseas:
mkdir //PROJECT// #(1)!
cd //PROJECT// #(2)!
- Crea la carpeta del proyecto
- Ingresa a la carpeta creada anteriormente
4. Crear el entorno virtual
python3 -m venv .venv
5. Activar el entorno virtual
source .venv/bin/activate
Una vez activado, deberías ver (.venv) al comienzo de la terminal.
6. Instalar Django en el entorno virtual
Una vez que el entorno virtual está activado, instala Django con el siguiente comando:
(.venv) pip install django
7. Generar un nuevo
Con la herramienta django-admin y el comando startproject se puede generar automáticamente la estructura inicial de un nuevo proyecto Django.
(.venv) django-admin startproject _site .
Utilizamos un punto . al final del comando para generar el proyecto en el directorio actual, evitando que Django cree una carpeta adicional con el nombre del proyecto.
8. Archivos del proyecto
Una vez generado, tendrás disponible el archivo manage.py en el proyecto:
mi-proyecto
├── _site
│ ├── __init__.py #(1)!
│ ├── asgi.py #(2)!
│ ├── settings.py #(3)!
│ ├── urls.py #(4)!
│ └── wsgi.py #(5)!
├── .venv #(6)!
└── manage.py #(7)!
- Inicializa el paquete Python del proyecto Django.
- Configura el punto de entrada ASGI para servidores asíncronos.
- Contiene la configuración principal del proyecto Django.
- Define las rutas y URLs del proyecto.
- Configura el punto de entrada WSGI para servidores web tradicionales.
- Contiene el entorno virtual de Python del proyecto.
- Permite administrar el proyecto mediante comandos de Django.
El archivo manage.py permite administrar y ejecutar distintas tareas del proyecto Django, como iniciar el servidor de desarrollo, ejecutar migraciones y crear aplicaciones.
1. Abrir la terminal de comandos
Presiona Cmd+Space para abrir Spotlight, luego escribe terminal y presiona Enter
Abrir Terminal en macOS
2. Navegar a la ubicación deseada
Una vez que tengas la terminal abierta, usa el comando cd para navegar a la carpeta donde deseas crear el proyecto Django. Por ejemplo, ir a Documentos:
cd ~/Documents
3. Crear la carpeta del proyecto y acceder a ella
Ejecuta el siguiente comando reemplazando mi-proyecto por el nombre que deseas:
mkdir //PROJECT// #(1)!
cd //PROJECT// #(2)!
- Crea la carpeta del proyecto
- Ingresa a la carpeta creada anteriormente
4. Crear el entorno virtual
python3 -m venv .venv
5. Activar el entorno virtual
source .venv/bin/activate
Una vez activado, deberías ver (.venv) al comienzo de la terminal.
6. Instalar Django en el entorno virtual
Una vez que el entorno virtual está activado, instala Django con el siguiente comando:
(.venv) pip install django
7. Generar un nuevo
Con la herramienta django-admin y el comando startproject se puede generar automáticamente la estructura inicial de un nuevo proyecto Django.
(.venv) django-admin startproject _site .
Utilizamos un punto . al final del comando para generar el proyecto en el directorio actual, evitando que Django cree una carpeta adicional con el nombre del proyecto.
8. Archivos del proyecto
Una vez generado, tendrás disponible el archivo manage.py en el proyecto:
mi-proyecto
├── _site
│ ├── __init__.py #(1)!
│ ├── asgi.py #(2)!
│ ├── settings.py #(3)!
│ ├── urls.py #(4)!
│ └── wsgi.py #(5)!
├── .venv #(6)!
└── manage.py #(7)!
- Inicializa el paquete Python del proyecto Django.
- Configura el punto de entrada ASGI para servidores asíncronos.
- Contiene la configuración principal del proyecto Django.
- Define las rutas y URLs del proyecto.
- Configura el punto de entrada WSGI para servidores web tradicionales.
- Contiene el entorno virtual de Python del proyecto.
- Permite administrar el proyecto mediante comandos de Django.
El archivo manage.py permite administrar y ejecutar distintas tareas del proyecto Django, como iniciar el servidor de desarrollo, ejecutar migraciones y crear aplicaciones.
Habilitar la autenticación¶
Django proporciona vistas y funcionalidades listas para utilizar en las operaciones de autenticación, como iniciar y cerrar sesión. Estas forman parte de la aplicación django.contrib.auth, que viene incluida por defecto en un proyecto Django:
| _site/settings.py | |
|---|---|
33 34 35 36 37 38 39 40 | |
Migraciones
El sistema de autenticación utiliza modelos y tablas propias de Django. Por esta razón, debemos ejecutar las migraciones antes de utilizarlo:
(.venv) python manage.py migrate
Configurar las URLs de autenticación¶
Podemos incluirlas directamente en las URLs del proyecto:
| _site/urls.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
Con esto, Django habilita las URLs correspondientes a las operaciones de autenticación, incluyendo el inicio y cierre de sesión.
| URL | Vista |
|---|---|
/accounts/login/ |
Inicio de sesión |
/accounts/logout/ |
Cierre de sesión |
/accounts/password_change/ |
Cambio de contraseña |
/accounts/password_reset/ |
Restablecimiento de contraseña |
Crear el formulario de inicio de sesión¶
Las vistas de autenticación de Django utilizan un formulario propio para solicitar las credenciales del usuario.
Debemos crear la siguiente estructura dentro de nuestra aplicación:
core/
└── templates/
└── registration/
└── login.html
Luego podemos crear el formulario de inicio de sesión:
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">
Iniciar sesión
</button>
</form>
El formulario proporcionado por Django contiene los campos necesarios para autenticar al usuario.
Configurar la página de inicio¶
Por defecto, después de iniciar sesión podemos definir la página a la que será dirigido el usuario mediante LOGIN_REDIRECT_URL:
LOGIN_REDIRECT_URL = '/'
De esta forma, cuando la autenticación sea exitosa, Django redirigirá al usuario hacia la página principal.
Mostrar el usuario autenticado¶
Una vez iniciada la sesión, podemos acceder al usuario autenticado mediante request.user.
En una plantilla también podemos utilizar directamente user:
{% if user.is_authenticated %}
<p>Bienvenido, {{ user.username }}</p>
{% endif %}
La propiedad is_authenticated permite comprobar si existe un usuario autenticado en la sesión actual.
Habilitar el cierre de sesión¶
Django también proporciona una vista para cerrar la sesión del usuario mediante la URL:
/accounts/logout/
Podemos agregar un formulario en nuestra plantilla para ejecutar el cierre de sesión:
<form method="post" action="{% url 'logout' %}">
{% csrf_token %}
<button type="submit">
Cerrar sesión
</button>
</form>
Método POST
El cierre de sesión se realiza mediante una solicitud POST, por lo que debemos utilizar un formulario y agregar {% csrf_token %}.
Configurar la redirección después del cierre de sesión¶
Podemos indicar la página a la que será enviado el usuario después de cerrar sesión mediante LOGOUT_REDIRECT_URL:
LOGOUT_REDIRECT_URL = '/'
Así, después de cerrar la sesión, Django redirigirá automáticamente al usuario hacia la página principal.
Proteger contenido para usuarios autenticados¶
También podemos restringir determinadas vistas para que solamente puedan acceder usuarios que hayan iniciado sesión.
Para ello, podemos utilizar el decorador login_required:
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
@login_required
def dashboard(request):
return render(request, 'dashboard.html')
Si un usuario no autenticado intenta acceder a esta vista, Django lo redirigirá hacia la página de inicio de sesión.


