DJANGO - AUTENTICACION BASICA

En esta sesión demostramos de manera sencilla cómo incorporar el mecanismo de autenticación de Django a una aplicación web, implementando el inicio y cierre de sesión con un formulario personalizado.

Cargando video...

NOTA: Solo puedes ver una versión limitada del video a baja resolución, si quieres ver la versión completa por favor regístrate y obtén alguno de nuestros planes!

Descripción del Vídeo

Django provee mecanismos (la aplicación 'django.contrib.auth' predeterminada) para agregar, de manera sencilla, la funcionalidad de autenticación (validar usuario y contraseña).

Aunque pueden personalizarse (y/o reimplementarse) muchas funcionalidades relacionadas, como la creación de usuarios, asignación de grupos, etc., las dejaremos en el sitio administrativo, y nos concentraremos en ilustrar el proceso de autenticar, aprovechando las características de Django.

Código disponible en:
https://github.com/networkfaculty/Fundamentos-Django/releases/tag/d-2.3.10


-- Agregar en curso/curso/settings.py
LOGIN_URL = '/login'
LOGIN_REDIRECT_URL = '/encuestas/'

Configurar rutas en curso/curso/urls.py

...
urlpatterns = [
...
   url(r'^$', RedirectView.as_view(url='/encuestas/', permanent=True), name='index'),
   # Utilizamos las vistas predeterminadas para iniciar y cerrar sesión
   url(r'^login/$',
       'django.contrib.auth.views.login',
       {'template_name': 'encuestas/login.html'}),
   url(r'^logout/$', 'django.contrib.auth.views.logout',{'next_page': '/'}),
]

Agregar identificación del usuario en plantilla base curso/encuestas/templates/encuestas/base.html

…
                </ul>
                <ul class="nav navbar-nav navbar-right">
                    {% if user.is_anonymous %}
                    <li><a href="{% url 'django.contrib.auth.views.login' %}">
                        {% bootstrap_icon 'log-in' %} Iniciar sesión</a></li>
                    {% else %}
                    <li><a href="#">{% bootstrap_icon 'user' %} Hola, {{ user }}</a></li>
                    <li><a href="{% url 'django.contrib.auth.views.logout' %}">
                        {% bootstrap_icon 'log-out' %} Salir</a></li>
                    {% endif %}
                </ul>
                {% endblock %}
...

Formulario personalizado de autenticación en curso/encuestas/templates/encuestas/login.html

{% extends 'encuestas/base.html' %}
{% load bootstrap3 %}

{% block contenido %}

{% if form.errors %}
   {% bootstrap_alert 'Las credenciales son inválidas' alert_type='danger' %}
{% endif %}

{% if next %}
   {% if user.is_authenticated %}
       {% bootstrap_alert 'No posee privilegios para acceder a esta funcionalidad' alert_type='danger' %}
   {% else %}
       {% bootstrap_alert 'Inicie sesión para acceder a esta funcionalidad' alert_type='warning' %}
   {% endif %}
{% endif %}

{% if user.is_authenticated %}
       {% bootstrap_alert 'Ya ha iniciado sesión' alert_type='info' %}
{% else %}
<h2>Iniciar sesión</h2>
<form method="post" action="{% url 'django.contrib.auth.views.login' %}"  class="form-inline">
{% csrf_token %}
{% bootstrap_field form.username layout='inline' %}
{% bootstrap_field form.password layout='inline' %}
{% bootstrap_button "Iniciar sesión" button_type="submit" button_class="btn-primary" %}
<input type="hidden" name="next" value="{{ next }}" />
</form>
{% endif %}

{% endblock %}

Rating

Global

Ver video en playlist

comments powered by Disqus

Headshot of Juan Paredes

Juan Paredes

Ingeniero de Sistemas con amplia experiencia, especializado en el desarrollo y arquitectura de software.