Vamos a hacer un pequeño sitio para aprender a usar templates y archivos estáticos, ya que estos tópicos no los vimos en el capítulo anterior, pero si los dejamos listos para simplemente aplicarlos ahora.
Se requiere revisar el capítulo anterior, ya que onda en la configuración para este capítulo.
La idea es hacer un simple sitio que posea una galería de películas.
Los tópicos que cubriremos son:
Para ello, usaremos el mismo proyecto que generamos en el capítulo anterior.
Si has cerrado la consola, debes iniciarla y cargar el entorno virtual que hemos generado.
Primero inicia una instancia de PowerShell en la carpeta en donde se encuentra el directorio .venv
.
Luego inicia el activador del entorno:
.\.venv\Scripts\Activate.ps1
Usaremos PowerShell. Para CMD usa
activate.bat
Ahora navega dentro de la carpeta ProyectoDjango/
con el comando cd ProyectoDjango/
.
Finalmente, inicia una instancia de Visual Studio Code:
code .
Estos pasos fueron explicados en el capítulo anterior, desde ahora en adelante, estos pasos se darán como entendidos.
Generamos una aplicacion, en mi caso se llamará peliculas
:
py manage.py startapp peliculas
Luego la registramos en settings.py
dentro de ProyectoDjango/
:
1 2 3 4 5 |
|
Siempre registra la aplicación, aunque parezca funcionar sin hacerlo, Django sufre por dentro.
Ahora, dentro del directorio raíz de nuestro proyecto, creamos la carpeta templates/
, se debe ver así:
ProyectoDjango/
hogar/
peliculas/
templates/
<- donde nuestros HTMLs se encontraránAhora, dentro de templates/
creamos una nueva carpeta, la cual llamare peliculas/
. Es ahí donde estarán todos los HTML para la aplicación peliculas.
Es buena práctica llamarle igual a la aplicación, así evitas confundirte luego en el código.
templates/
peliculas/
Podemos usar una plantilla base que podrá contener cosas básicas, como cargar estilos, un navbar, etc. Para ello debemos crearlo.
Dentro de la carpeta templates/
crearemos un archivo .HTML, por convención se le llama base.html
.
templates/
peliculas/
base.html
Dentro de base.html
podemos definir bloques, que podremos modificar desde plantillas hijas.
Podemos definir bloques a los que luego podremos sobrescribirles su contenido. Por ejemplo:
{% block title %}Peliculas{% endblock %}
title
el cual, por defecto, contendrá el texto Peliculas
. Dentro de otra template, podremos sobrescribir ese valor simplemente sobrescribiéndolo:
{% block title %}Django sin cadenas | Peliculas{% endblock %}
Y eso hará que se muestre Django sin cadenas | Peliculas
como título del sitio.
Como puedes observar, hemos dejado un bloque llamado content
el cual no posee nada, pues allí pondremos el contenido según el contexto del sitio.
Ahora generaremos la vista para el inicio de la aplicación películas. Para ello nos vamos a views.py
dentro de la carpeta de la aplicación películas, peliculas/
:
1 2 3 4 5 6 |
|
Nótese que
index
es una convención para indicar el sitio principal de una aplicación.
Tambiénrequest
por convención se nombra de esta forma a la variable, aunque puedes llamarle como quieras.
render
es una función que renderiza una template que le indiquemos, y le da un contexto que podemos darle mediante el uso de{}
diccionarios python.
Veremos esto más en profundidad en el futuro dentro de este capítulo.
Como puedes notar, no hemos creado el archivo index.html
dentro de templates/peliculas/
. Simplemente, lo creamos.
Ahora, dentro de index.html
escribimos:
1 2 3 4 5 6 7 |
|
extends
nos permite heredar una plantilla, en este caso base.html
. Nótese que usa la ruta relativa a templates/
.content
con un div
que contiene un pequeño saludo.Ahora, para acceder a nuestra aplicación y a nuestro sitio de bienvenida, debemos registrar la url.
Para ello, creamos un archivo urls.py
dentro de la carpeta de nuestra aplicación peliculas
en peliculas/
:
1 2 3 4 5 6 7 8 |
|
Si es importante que
app_name
contenga el nombre de nuestra aplicación.
Es deber indicar a cada ruta su respectivoname
. Y estos valores deben ser únicos (dentro del mismo archivo).
Ahora registramos el archivo urls.py
dentro de urls.py
de nuestro proyecto, en ProyectoDjango/urls.py
:
1 2 3 4 5 6 7 |
|
Ahora, iniciamos nuestro servidor, para ver cómo va la cosa.
py manage.py runserver
Al dirigirnos a http://127.0.0.1:8000/ deberíamos ver nuestro saludo del capítulo anterior.
Y al dirigirnos a http://127.0.0.1:8000/peliculas/ deberíamos ver nuestro mensaje de bienvenido a películas.
Este capítulo se ha hecho muy largo, vamos a continuar en el siguiente capitulo.