Django (Python web Framework)
Programación en la Web
H E N RY A N D R ÉS J I M É NE Z H E R R E R A
J AT H I N S ON M E N ES ES M E N D OZA
E S C U E L A D E I N G E N I E R Í A D E S I S T E M A S E I N F O R M ÁT I C A
U N I V E R S I D A D I N D U S T R I A L D E S A N TA N D E R
¿Qué es un Framework?.
Podemos definir un framework o “modelo de trabajo” cómo un conjunto estandarizado de
conceptos, practicas, criterios y herramientas enfocadas en la resolución de una problemática.
Un framework de desarrollo web como DJANGO proporciona un marco de trabajo para poder
desarrollar de forma sencilla aplicaciones web de múltiples páginas o también para el desarrollo
de API REST, el objetivo de este framework es proporcionar un modelo de desarrollo para
aplicaciones web basado en el lenguaje de programación Python.
2
Arquitectura de Django
3
Creando una aplicación MPA con DJANGO
y POSTGRESQL.
Vamos a crear una aplicación de ejemplo para trabajar con DJANGO, para esto el primer paso es instalar Python
en nuestro equipó, podemos descargar la versión del interprete de Python del siguiente enlace:
https://www.python.org/downloads/
4
Creando una aplicación MPA con DJANGO y POSTGRESQL.
Una vez descargado e instalado Python en nuestro equipo usamos el gestor de paquetes PIP para instalar
Django desde consola con el siguiente comando:
5
Creando una aplicación MPA con DJANGO y POSTGRESQL.
Dependiendo de la base de datos a trabajar es necesario instalar algunos módulos adicionales, para trabajar
con postgres tenemos que instalar los paquetes:
6
Creando una aplicación MPA con DJANGO y POSTGRESQL.
Para comprobar que efectivamente se encuentra instalado ejecutamos el comando que muestra los paquetes
instalados:
7
Creando una aplicación MPA con DJANGO y POSTGRESQL.
Para iniciar un nuevo proyecto ejecutamos el comando:
$ django-admin startproject mysite
Esto creará un directorio con el nombre que le dimos al proyecto, en el encontraremos un archivo llamado
magane.py y un directorio con el mismo nombre del proyecto.
8
Creando una aplicación MPA con DJANGO y POSTGRESQL.
En el subdirectorio con el mismo nombre del proyecto encontraremos la siguiente estructura:
De allí se resaltan los siguientes archivos:
• Settings.py : Este es el archivo principal de configuración del
proyecto, contiene las aplicaciones internas y configuraciones
como la conexión a base de datos.
• Urls.py: Este archivo nos permite configurar las rutas de nuestra
aplicación web.
Más información: https://docs.djangoproject.com/en/3.2/intro/tutorial01/
9
Creando una aplicación MPA con DJANGO y POSTGRESQL.
Ahora vamos a ejecutar nuestra aplicación web en modo local con un servidor interno de pruebas, este
servidor solo debe ser usado para desarrollo más no para producción, desde la consola y estando en el
directorio raíz del proyecto “donde está el archivo manage.py”, usamos el comando:
$ Python manage.py runserver
Esto levantará el servidor de pruebas y
expondrá nuestra aplicación en el puerto por
defecto 8000, para acceder a nuestra app
ingresamos en el navegador a :
localhost:8000
Más información: https://docs.djangoproject.com/en/3.2/intro/tutorial01/
10
Creando una aplicación MPA con DJANGO y POSTGRESQL.
Si nuestra aplicación se creó correctamente podremos ver la siguiente página en el navegador:
Más información: https://docs.djangoproject.com/en/3.2/intro/tutorial01/
11
Creando una aplicación MPA con DJANGO y POSTGRESQL.
Ahora es necesario que conectemos nuestra aplicación de Django con la base de datos POSTGRES, para ello se
recomienda crear una cuenta en el sitio:
https://www.elephantsql.com/
Podemos elegir que Django sea quien administre la base de datos, o podemos mapear la base de datos y
administrarla por separado, para este ejemplo vamos a permitir que Django gestione la base de datos. A partir
de ahora se recomienda trabajar la parte del código desde un editor como Visual Estudio Code, se puede
descargar en:
https://code.visualstudio.com/
12
Creando una aplicación MPA con DJANGO y POSTGRESQL.
Una vez creada la cuenta y configurada una nueva instancia de base de datos en ElephantSQL debemos tener
credenciales cómo:
13
Creando una aplicación MPA con DJANGO y POSTGRESQL.
Ahora vamos a configurar la conexión con la base de datos, para esto es importante no tener corriendo la
aplicación, en caso de tenerla corriendo con el comando ctrl+c se cierra la ejecución, ahora en un entorno
como visual estudio vamos a editar el archivo settings .py
Para profundizar: https://docs.djangoproject.com/en/3.2/ref/settings/#databases
14
Creando una aplicación MPA con DJANGO y POSTGRESQL.
Ahora vamos a permitir que Django ejecute las migraciones iniciales a la base de datos, esto lo hacemos con el
comando:
$ python manage.py migrate
Con esta acción Django creara un
conjunto de tablas en base de datos,
incluyendo funcionalidades para manejo
de usuarios y roles de usuario.
15
Creando una aplicación MPA con DJANGO y POSTGRESQL.
Ahora vamos a crear un super-usuario para poder acceder al panel de administración de Django, para esto
ejecutamos el siguiente comando:
$ python manage.py createsuperuser
16
Creando una aplicación MPA con DJANGO y POSTGRESQL.
Volvemos a ejecutar nuestra aplicación y nos dirigimos a la siguiente dirección, donde debemos ingresar las
credenciales del usuario que acabamos de crear:
http://localhost:8000/admin
17
Creando una aplicación MPA con DJANGO y POSTGRES.
Con este menú ya tenemos funcionalidades básicas para manejo de usuarios, grupos de usuarios etc, que
además tiene persistencia en base de datos.
18
Creando una aplicación MPA con DJANGO y POSTGRES.
Lo siguiente es crear la estructura de nuestro proyecto, la idea es crear un sistema de registro de libros sencillo
para esto vamos a usar el siguiente modelo de base de datos.
19
Creando una aplicación MPA con DJANGO y POSTGRES.
Para esto lo primero que tenemos que hacer es crear un módulo de aplicación, la idea de un módulo es
encapsular un conjunto de funcionalidades relacionadas con los mismos datos del sistema, para crear un
módulo usamos el siguiente comando.
$ python manage.py startapp books
Esta acción creara una carpeta con el nombre de nuestro módulo, de
aquí es importante resaltar los archivos:
• Models.py: Es el archivo donde vamos a crear nuestros modelos, y
que posteriormente serán representados por Django como tablas en
la base de datos.
• Views.py: Es el archivo donde se va a configurar la lógica de cada
página del sistema y de este módulo, hace las veces de controlador.
Profundizar: https://docs.djangoproject.com/en/3.2/intro/tutorial01/
20
Creando una aplicación MPA con DJANGO y POSTGRES.
Ahora es necesario editar el archivo settings.py para configurar la nueva aplicación creada como parte del
proyecto para ello editamos el apartado Installed Apps y agregamos el nombre de nuestra aplicación.
Importante la referencia a BooksConfig cambia dependiendo del nombre del módulo.
Profundizar: https://docs.djangoproject.com/en/3.2/intro/tutorial01/
21
Creando una aplicación MPA con DJANGO y POSTGRES.
Ahora vamos a definir nuestro primer modelo que es el modelo de autores, para esto editamos el archivo
models.py , lo que buscamos es crear una clase que represente al modelo y que posteriormente el ORM de
Djnago pueda mapear a una tabla de base de datos. :
Profundizar: https://docs.djangoproject.com/en/3.2/topics/db/models/
22
Creando una aplicación MPA con DJANGO y POSTGRES.
Los modelos para autores y categorías serían:
El id (PK) es creado automáticamente por
Django cuando se hace la migración del
modelo a la base de datos.
Profundizar: https://docs.djangoproject.com/en/3.2/topics/db/models/
23
Creando una aplicación MPA con DJANGO y POSTGRES.
Los modelos libros quedaría de la siguiente forma:
El id (PK) es creado automáticamente por Django cuando se hace la migración del modelo a la base de datos,
además se crean las claves foráneas que se indican en el modelo usando la clase models.
Profundizar: https://docs.djangoproject.com/en/3.2/topics/db/models/
24
Creando una aplicación MPA con DJANGO y POSTGRES.
Ahora para crear estos modelos en base de datos ejecutamos los siguientes comandos:
$ Python manage.py makemigrations books
Profundizar: https://docs.djangoproject.com/en/3.2/topics/db/models/
25
Creando una aplicación MPA con DJANGO y POSTGRES.
Ahora para crear estos modelos en base de datos ejecutamos los siguientes comandos:
$ Python manage.py sqlmigrate books 0001
Esto genera el SQL necesario para crear las tablas en base de datos.
Profundizar: https://docs.djangoproject.com/en/3.2/topics/db/models/
26
Creando una aplicación MPA con DJANGO y POSTGRES.
Ahora para crear estos modelos en base de datos ejecutamos los siguientes comandos:
$ Python manage.py migrate
Finalmente aplicamos los cambios en base de datos, con esta operación ya se deben crear las tablas en base de datos.
Profundizar: https://docs.djangoproject.com/en/3.2/topics/db/models/
27
Creando una aplicación MPA con DJANGO y POSTGRES.
Es momento de crear nuestra primera página, para esto vamos a editar el archivo views.py del componente
books y agregaremos el siguiente código.
Profundizar: https://docs.djangoproject.com/en/3.2/intro/tutorial01/
28
Creando una aplicación MPA con DJANGO y POSTGRES.
Luego tenemos que agregar una URL de nuestro sitio para está página, para esto creamos un archivo llamado
urls.py dentro de la carpeta del componente books y agregamos lo siguiente.
Profundizar: https://docs.djangoproject.com/en/3.2/topics/db/models/
29
Creando una aplicación MPA con DJANGO y POSTGRES.
Finalmente tenemos que incluir nuestro archivo de configuración de urls de books en el archivo de
configuración de urls principal del proyecto que se encuentra en la carpeta con el mismo nombre del proyecto,
allí editamos y agregamos lo siguiente.
Profundizar: https://docs.djangoproject.com/en/3.2/topics/db/models/
30
Creando una aplicación MPA con DJANGO y POSTGRES.
Ahora ejecutamos nuestra aplicación desde consola y nos dirigimos a la ruta definida:
$ Python manage.py runserver http://127.0.0.1:8000/books/
Con esto hemos creado la primera página, pero de momento solo retorna un texto, vamos a enlazarla con un
template para renderizar algo más asociado a una página html.
Profundizar: https://docs.djangoproject.com/en/3.2/topics/db/models/
31
Creando una aplicación MPA con DJANGO y POSTGRES.
Lo que tenemos que hacer ahora es crear un directorio llamado templates en el directorio raíz del proyecto, en
esta carpeta crearemos una subcarpeta llamada books y allí crearemos un archivo llamado index.html
Profundizar: https://docs.djangoproject.com/en/3.2/topics/db/models/
32
Creando una aplicación MPA con DJANGO y POSTGRES.
Ahora es necesario que indiquemos el directorio de templates en el archivo settings.py del proyecto para esto
editamos las siguientes líneas importante os y agregando la carpeta templates a DIRS.
Profundizar: https://docs.djangoproject.com/en/3.2/topics/db/models/
33
Creando una aplicación MPA con DJANGO y POSTGRES.
En el archivo index.html configuramos la estructura de la página, un ejemplo sería.
Profundizar: https://docs.djangoproject.com/en/3.2/topics/db/models/
34
Creando una aplicación MPA con DJANGO y POSTGRES.
Ahora tenemos que modificar la vista que creamos para que renderice nuestro template, para esto vamos a
hacer modificaciones el código de videws.py del módulo books de la siguiente forma.
Profundizar: https://docs.djangoproject.com/en/3.2/topics/db/models/
35
Creando una aplicación MPA con DJANGO y POSTGRES.
Ahora cuando recargamos nuestra vista se estará renderizando nuestro template.
Profundizar: https://docs.djangoproject.com/en/3.2/topics/db/models/
36
Creando una aplicación MPA con DJANGO y POSTGRES.
Vamos a crear algunos autores desde el Shell de Django que es una aplicación de consola. Para esto en la
consola escribimos los siguientes comandos.
$ Python manage.py shell
Lo primero es importar el o los modelos a usar, luego podemos crear un objeto de la clase y al guardarlo se
guardarán los datos automáticamente en base de datos con el método save.
Cree tantos datos como requiera y luego puede salir de consola usando el método exit().
Profundizar https://docs.djangoproject.com/en/3.2/intro/tutorial02/
37
Creando una aplicación MPA con DJANGO y POSTGRES.
Vamos a modificar un poco nuestra vista para mostrar la lista de autores, lo primero es agregar datos al
contexto de nuestra página. Para esto modificamos el código en el view.py
Con esta modificación en la línea 5
importamos el modelo autores, en la
línea 10 ejecutamos una consulta en
base de datos que retorna todos los
autores como una lista, luego pasamos el
resultado al contexto y ahora podemos
usar ese resultado en nuestro template.
Profundizar https://docs.djangoproject.com/en/3.2/intro/tutorial02/
38
Creando una aplicación MPA con DJANGO y POSTGRES.
Ahora vamos a modificar nuestro template usando el lenguaje de manejo de templates que provee django para
renderizar o mostrar datos capturados desde una consulta, agretamos en nuestro index.html lo siguiente:
Con esto cuando existan autores creamos una lista no ordenada que muestra nombre y país de cada autor
registrado en base de datos.
Profundizar https://docs.djangoproject.com/en/3.2/intro/tutorial02/
39
Creando una aplicación MPA con DJANGO y POSTGRES.
El resultado al ejecutar la aplicación e ingresar a la url de books es:
Como se puede observar en la parte inferior se renderizó el elemento con los datos del autor que vienen de base
de datos.
Profundizar https://docs.djangoproject.com/en/3.2/intro/tutorial02/
40
Creando una aplicación MPA con DJANGO y POSTGRES.
Ahora vamos a mejorar el manejo de plantillas con el sistema de extensión de plantillas de Django, este sistema
nos permite definir plantillas bases que tengan contenido en común para muchas páginas, y luego extender de
ellas página específicas variando una parte del contenido, así por ejemplo podemos hacer una base que tenga
el mismo navbar y luego extender de ellas páginas que contienen ese navbar y demás librerías y que cambian
en contenido. Lo primero que haremos será crear un archivo llamado base.html en la carpeta de templates del
proyecto.
Profundizar https://docs.djangoproject.com/en/3.2/ref/templates/language/
41
Creando una aplicación MPA con DJANGO y POSTGRES.
En este archivo base.html
vamos a crear la base del
proyecto, el esquema sería
algo como lo que se
observa. Gracias al
lenguaje de manejo de
templates de Django
podemos definir bloques
que posteriormente
pueden ser sobrescritos en
los templates que
extiendan de esta base.
También se agrego la
librería boostrap a la base.
Profundizar https://docs.djangoproject.com/en/3.2/ref/templates/language/
42
Creando una aplicación MPA con DJANGO y POSTGRES.
En el bloque de navbar se
incluye uno de los ejemplos
de navbar que viene con la
librería para poderlo usar
en todas las páginas
extendidas.
Profundizar https://docs.djangoproject.com/en/3.2/ref/templates/language/
43
Creando una aplicación MPA con DJANGO y POSTGRES.
Ahora vamos a crear el índice principal de nuestra aplicación, este índice va a extender de nuestra base y en el vamos a
poner contenido del índice principal de la aplicación.
Profundizar https://docs.djangoproject.com/en/3.2/ref/templates/language/
44
Creando una aplicación MPA con DJANGO y POSTGRES.
Tenemos que crear una vista para nuestro home en el componente books, para esto vamos a editar el archivo views.py y
vamos a agregar esta nueva vista.
45
Creando una aplicación MPA con DJANGO y POSTGRES.
Ahora tenemos que configurar la aplicación para que se redireccione el índice a nuestra página para esto vamos a
modificar el archivo urls.py de la carpeta con el nombre del archivo, vamos a hacer que la ruba base de la aplicación se
dirija hacía el componente books, modificamos la línea 20 cambiando la ruba base.
46
Creando una aplicación MPA con DJANGO y POSTGRES.
Finalmente es necesario modificar el archivo urls.py del componente books, para cambiar la rutas de tal manera que la
vista home sea el index, y la vista que habíamos creado se convierta en el index pero del enlace books/
47
Creando una aplicación MPA con DJANGO y POSTGRES.
Ahora lo que tenemos que hacer es levantar el servidor de desarrollo y dirigirnos hacía la ruta http://localhost:8000/
Nos renderizará la vista de home con su template que al extender de base ya tiene el nabvar integrado.
48
Creando una aplicación MPA con DJANGO y POSTGRES.
Vamos a crear ahora la vista de autores, para esto es necesario que creemos un nuevo template en la subcarpeta books
llamado authors.html este template también va a extender de la base, vamos a pasar el código que mostraba autores a
este template.
49
Creando una aplicación MPA con DJANGO y POSTGRES.
Igualmente es necesario crear una vista para autores y modificar el archivo urls.py del componente books para agregar la
url de autores.
50
Creando una aplicación MPA con DJANGO y POSTGRES.
Ahora sin ingresamos a la url http://localhost:8000/authors/ veremos la página de autores que acabamos de crear.
51
Creando una aplicación MPA con DJANGO y POSTGRES.
Vamos a enlazar ahora la url de las páginas con los botones de nuestro navbar, para ello vamos a editar el archivo
base.html y agregamos lo siguiente:
Con esto al renderizar nuestra navbar el sistema de templates de Django reemplazara la ruta de cada enlace, el
nombre que se pone allí corresponde con el nombre definido en urls.py del componente books.
52
Creando una aplicación MPA con DJANGO y POSTGRES.
Con esto ya podremos navegar por las páginas home y authors libremente desde el navbar de nuestra aplicación.
53
Formularios
Ahora vamos a crear un formulario para crear autores y guardarlos en base de datos, para esto tenemos que crear un
nuevo template en la carpeta de templates/books, también lo vamos a extender de la base.
54
Formularios.
Vamos a crear un nuevo archivo llamado forms.py este archivo va a contener la configuración de nuestros formularios, lo
crearemos en el componente books.
El formulario debe ser acorde a los
campos del modelo.
Profundizar: https://docs.djangoproject.com/en/3.2/topics/forms/
55
Formularios.
Para usar un formulario en una vista de creación de modelos se hace de la siguiente forma.
Profundizar: https://docs.djangoproject.com/en/3.2/topics/forms/
56
Formularios.
De esta manera la vista en nuestro proyecto quedaría:
No olvide importar la librería
render,
HttpResponseRedirect y
reverse
, recuerde que en Python la
indentación es importante por
lo que una indentación que no
sea correcta le va a generar
errores.
Profundizar: https://docs.djangoproject.com/en/3.2/topics/forms/
57
Formularios.
Ahora tenemos que modificar nuestro template y añadir el formulario:
Profundizar: https://docs.djangoproject.com/en/3.2/topics/forms/
58
Formularios.
No olvide modificar el archivo urls.py del componente books para añadir la ruta a la nueva vista.
Profundizar: https://docs.djangoproject.com/en/3.2/topics/forms/
59
Formularios.
Finalmente el resultado cuando accedemos a http://localhost:8000/authors/new/ es:
Profundizar: https://docs.djangoproject.com/en/3.2/topics/forms/
60
Crear un Login.
Ahora vamos a agregar un Loguin a nuestra
página, lo primero es generar un template,
este template no va a tener navbar por lo
tanto no va a extender de la plantilla base.
Profundizar: https://docs.djangoproject.com/en/3.2/topics/forms/
61
Fuentes
1. https://www.mclibre.org/consultar/informatica/lecciones/formato-
json.html#:~:text=Sintaxis%20de%20JSON&text=Los%20objetos%20son%20listas%20de,escriben%20sie
mpre%20entre%20comillas%20dobles.
2. https://www.json.org/json-en.html
3. https://www.javatpoint.com/json-example
4. https://github.com/Han253/django_example/tree/main
62