Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Cómo implementar un registro de usuarios en Django 1.7 en menos de 10 minutos.

Jesús Lucas
  • Escrito por Jesús Lucas el 20 de Junio de 2014
  • 4 min de lectura | Backend
Cómo implementar un registro de usuarios en Django 1.7 en menos de 10 minutos.

En este artículo vamos a ver como implementar un sistema de registro de usuarios al framework Django en su versión 1.7, de manera que no tengamos que desarrollarlo nosotros , aprovechando paquetes de tercero. Para conseguirlo vamos a usar un paquete llamado django-allauth. Este paquete nos permitirá añadir funcionalidad de registros de usuario en django mediante nombre de usuario, email, redes sociales y muchas otras opciones. Para la explicación vamos a realizar un proyecto muy sencillo que llamaremos registro_usuarios . Este proyecto tendrá un listado de artículos de texto y para acceder a verlos deberemos estar registrados y autenticados en el sistema.

1. Creación del Proyecto: registro_usuarios

Para crear el proyecto primero deberemos tener activado un entorno virtual con Django 1.7 instalado ( si no sabes como hacerlo mira este artículo).

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

Como puedes ver, dispongo de un entorno virtual env-django-17 . Activo el entorno virtual el comando source y posteriormente me aseguro de tener Django 1.7 instalado. A continuación crearemos el proyecto con el comando:

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

En el siguiente punto crearemos la aplicación articulos en nuestro proyecto.

2. Crear la Aplicación articulos

Ahora vamos a crear una aplicación para nuestro proyecto. La aplicación la llamaremos articulos y contendrá un modelo Articulo y una vista listar_articulos que mostrará un listado con los artículos. Para añadir nuevos artículos y probar nuestro proyecto, sólo por no alargar el desarrollo de este artículo, usaremos el administrador de Django admin . Para crear la aplicación, desde el directorio de nuestro proyecto, ejecutamos:

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

Tenemos que añadir la aplicación a INSTALLED_APPS , en archivo settings.py de nuestro proyecto:

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

Modelo: Articulo

Pasamos a la creación del modelo de nuestra aplicación, editamos el fichero models.py dentro del directorio articulos:

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

Una vez definido el modelo vamos a crearlo en la base de datos, para ello ejecutamos el comando makemigrations para crear los archivos de migración y migrate para aplicar los cambios en la base de datos:

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

Nos pedirá también un nombre de usuario administrador para poder usarlo con el administrador de Django.

Vista: listar_articulos

Ya que tenemos el modelo Articulo creado, vamos a crear nuestra vista listar artículo. Esta vista consultará todos los artículos y los renderizará en el template listar_articulos.html . Editamos el archivo views.py de la aplicación articulos :

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

Podrás observar que renderizamos un template que aún no hemos creado listar_articulos.html . Para ello crearemos una carpeta templates dentro del directorio de la aplicación articulos , dentro de la carpeta templates creamos una carpeta articulos , y finalmente dentro de esta carpeta creamos el fichero listar_articulos.html . Aqui tienes un breve resumen de la estructura de directorios de nuestro proyecto registro_usuarios :

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

Template: listar_articulos.html

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

URLs

Una vez tenemos la vista creada, vamos a asociarla a una url en concreto. Queremos que el listado de artículos salga en el home de nuestro proyecto, es decir, en http://localhost:8000/. Para ello editamos el archivo urls.py con el siguiente contenido:

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

Instalación de django-allauth

Para el registro de usuarios vamos a usar una aplicación de terceros: django-allauth ( más info ). Realizaremos la instalación de django-allauth con el instalador de paquetes pip :

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

Esto nos instalará django-allauth en nuestro entorno virtual con sus dependencias. Ahora tenemos que editar el archivo settings.py e incluir las siguientes aplicaciones en INSTALLED_APPS :

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

También tendremos que añadir tres procesadores de contexto a los que ya trae por defecto activados Django 1.7. Para esto añadimos en el settings.py :

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

También tendremos indicar los backends de autenticación que vamos a usar, añadimos a settings.py :

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

Como viste arriba, django-allauth requiere de la aplicación django.contrib.sites , para que esta funcione correctamente tendremos que añadir una último opción en settings.py :

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

Una vez editado el fichero settings.py , necesitamos añadir las urls necesarias para django-allauth . Editaremos el fichero urls.py de nuestro proyecto y añadiremos la linea necesarias para django-allauth. Deberá quedar algo así:

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

Por último tenemos que aplicar los cambios necesarios en nuestra base de datos para django-allauth:

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

Listo, ya tenemos django-allauth instalado en nuestro proyecto, ahora vamos a hacer uso de el.

Uso básico de Django-Allauth

Vamos a hacer uso de la aplicación de registro de usuarios y autenticación que acabamos de instalar en nuestro proyecto. Para permitir que solo los usuarios autenticados puedan ver la vista listar artículo haremos uso de un decorador que nos proporciona django.contrib.auth: @login_required En views.py de la aplicación articulos importaremos el decorador y lo colocaremos encima de la linea de definción de nuestra vista. Tendremos algo así:

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

Si ahora vamos a http://localhost:8000 (recuerda tener corriendo el servidor), seremos redirigido a http://localhost:8000/accounts/login/?next=/ , nos pedirá que nos autentiquemos e incluso podremos crearnos una nueva cuenta de usuario. En el caso de que no te pida usuario, es que estarás logueado como administrador, deberás entrar al administrador de Django y cerrar tu sesión. Iniciar sesión Si entramos con nuestra cuenta de administrador o una que hayamos creado desde el enlace <em>Sign up</em> podremos ver el contenido de nuestra vista listar_articulos : listado-de-articulos Ahora vamos a editar el template listar_articulos.html , para mostrar nuestro nombre de usuario y un enlace para salir en el caso de que estemos autenticados. Para esto los editamos y lo dejamos con el siguiente contenido:

$ cd mis_entornos/env-django-17/
$ source bin/activate
(env-django-17)$ pip freeze 
....
Django==1.7b4
....

Esto hará que veamos el template así: Listado de Articulos-con-usuario Con esto ya dispones de las herramientas necesarias para crear aplicaciones Django con registro de usuarios. django-allauth dispone de multitud de opciones adicionales, por ejemplo registro de usuarios con confirmación de email, autenticación  con redes sociales, y muchas más, puedes consultar todo lo que te ofrece django-allauth en su documentación oficial .

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars