Hola Pythoniano, en este post aprenderemos como implementar la librería django-allauth en nuestros proyectos, que te diviertas!.
¿Qué es django Allauth?
Django tiene un robusto sistema de autenticación incorporado para los usuarios, pero no proporciona soporte para la autenticación de cuentas sociales como Facebook, Twitter, Google, Github, etc. Es aquí donde aparece django-allauth con múltiples características que lo destacan, desde implementación de cuentas locales( email y password) hasta cuentas sociales con diversos proveedores de autenticación.
Características de Django Allauth
- Permite registrar cuentas locales y sociales.
- Admite múltiples esquemas de autenticación
(por ejemplo, inicio de sesión por nombre de usuario o por email) - Permite conectar más de una cuenta social a una cuenta local
- Registro instantáneo para cuentas sociales.
- Tener múltiples correos y configuración de una primaria.
- Recuperación de contraseña por email.
- Link de verificación de email.
- Multitud de proveedores de autenticación.
PREPARANDO EL ENTORNO VIRTUAL
Abrimos una consola o terminal (Linux, Windows ó Mac )
#creamos la carpeta project-allauth
$ mkdir project-allauth
#ingresamos en la carpeta
$ cd project-allauth
#instalando el generador de entornos virtualenv
$ pip install virtualenv
#creamos el entorno virtual "myenv"
$ virtualenv myenv
#en Linux o Mac activamos el entorno con el comando:
$ source myenv/bin/activate
#en Windows activamos el entorno con el comando:
$ .\myenv\Scripts\activate
#instalamos el framework Django
(myenv) $ pip install django
#creamos el proyecto projectAllauth
(myenv) $ django-admin startproject projectAllauth
#aplicamos las migraciones a db
(myenv) $ python manage.py migrate
Instalando django-allauth
(myenv) $ pip install django-allauth
instalando django-crispy-forms
django-crispy-forms nos ayuda a personlizar nuestros formularios con bootstrap4.
(myenv) $ pip install django-crispy-forms
configurando el settings.py
configuramos algunas variables en el settings.py de nuestro proyecto

actualizamos la variable TEMPLATES:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')], #nueva linea
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
agregamos la variable AUTHENTICATION_BACKENDS
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
agregamos las siguientes apps a nuestra variable INSTALLED_APPS
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.sites', # nueva linea
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'allauth', # nueva linea
'allauth.account', # nueva linea
'allauth.socialaccount', # nueva linea
'crispy_forms' # nueva linea
]
actualizamos el idioma de nuestro proyecto a español con la clave "es"
LANGUAGE_CODE = 'es'
agregaremos las siguientes variables que explicaremos a continuacioón.
SITE_ID = 1
CRISPY_TEMPLATE_PACK = 'bootstrap4'
ACCOUNT_EMAIL_VERIFICATION = 'none'
ACCOUNT_LOGOUT_REDIRECT_URL = '/accounts/login/'
LOGIN_REDIRECT_URL = '/'
- SITE_ID: es un identificador de nuestro sitio web.
- CRISPY_TEMPLATE_PACK : usamos las clases de bootstrap4 en nuestros formulario.
- ACCOUNT_EMAIL_VERIFICATION: tiene 2 posibles valores 'none' o 'mandatory', lo seteamos en none con esto evitamos que se envie un link de confirmación por email al registrar un usuario ya que aun no configuramos el SMTP (parte 2 de la serie)
- ACCOUNT_LOGOUT_REDIRECT_URL : para redireccionar al login cuando cierras sesión
- LOGIN_REDIRECT_URL : para redireccionar al home cuando inicias sesión
Configurando el urls.py

importamos los métodos url e include y agregamos 2 rutas más.
from django.conf.urls import url, include
from django.views.generic import TemplateView
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^accounts/', include('allauth.urls')), #nueva linea
url(r'^$', TemplateView.as_view(template_name='base.html'), name='home'), #nueva linea
]
- el url accounts nos proporciona todas las rutas para gestionar la autenticación
- el url templateviews es un acceso directo para crear un view rapidamente, mostrando el home en la ruta principal /.
Agregando los templates para nuestros formularios personalizados
ahora solo queda agregar los templates html personalizados para el login, logout, signup, etc
en este paso, descargaremos este
templates.zip
y lo agregaremos descomprimido en la ruta principal de nuestro proyecto,
el archivo contiene la carpeta templates y la subcarpeta account con sus templates y la base.html
Descargar: templates.zip
El template base.html como su nombre lo indica es la estructura básica de nuestros templates
que contiene loss cdn's de bootstrap4.
Tambien tiene la etiqueta especial de django request.user.is_authenticated ,
para verificar si el usuario esta autenticado y mostrarle los respectivos botones.

finalizando integración de django Allauth
para culminar creamos las nuevas migraciones.
python manage.py migrate
Y ejecutamos el servidor!
python manage.py runserver
Ingresamos al HOME:
http://127.0.0.1:8000/

Ingresamos al Login:
http://127.0.0.1:8000/accounts/login/

Ingresamos al signup:
http://127.0.0.1:8000/accounts/signup/

Ingresamos al Logout:
http://127.0.0.1:8000/accounts/logout/

Genial si completaste el articulo! fue todo por este capítulo,
seguro que te sera muy útil este contenido en alguno de tus proyectos
Hasta pronto Pythoniano!