Henry
3 min read

625 vistas
#allauth #python #django

compartir:

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

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

django_setting.png

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 = '/'
        
    

Hola!, revisa nuestro curso "Crea tu Tienda Online con Python, Django y AWS" esta genial!!

curso selenium como un ninja

Configurando el urls.py

urls_settings.png

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
    ]

        
    

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.

templates-django.png

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/

home_django.png

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

login_django.png

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

django_singup.png

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

django_logout.png

¿Quieres recibir el código del proyecto por Email y tambien suscribirse a Dojopy News?


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!

Now is better than never

Hola!, revisa nuestro curso "Crea tu Tienda Online con Python, Django y AWS" esta genial!!

curso selenium como un ninja