Programación Back-End

Unidad 1: Tecnologías del lado del Servidor

Templates y archivos estáticos

Redactado por Criz
Publicado el 30 de mayo de 2024 a las 15:54
Última actualización el 30 de mayo de 2024 a las 15:54

Acciones rapidas
Editar
Siguiente
Previo

Templates y (casi) Static files

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.

Idea

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.

Pasos previos

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:

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:

Estos pasos fueron explicados en el capítulo anterior, desde ahora en adelante, estos pasos se darán como entendidos.

Generando la aplicación

Generamos una aplicacion, en mi caso se llamará peliculas:

Luego la registramos en settings.py dentro de ProyectoDjango/:

1
2
3
4
5
INSTALLED_APPS = [
    ...
    'hogar',
    'peliculas',
]

Siempre registra la aplicación, aunque parezca funcionar sin hacerlo, Django sufre por dentro.

Templates

Ahora, dentro del directorio raíz de nuestro proyecto, creamos la carpeta templates/, se debe ver así:

Ahora, 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.

Template base

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.

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:

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.

Inicio de películas

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
from django.shortcuts import render

# Create your views here.

def index(request):
    return render(request, "peliculas/index.html", {})

Nótese que index es una convención para indicar el sitio principal de una aplicación.
También request 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 "base.html" %}

{% block content %}
<div class="container">
    <h2>Hola, bienvenido a Peliculas!</h2>
</div>
{% endblock %}

Vinculando la vista a una ruta

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
from django.urls import path
import peliculas.views as app # 👈 importamos las vistas

app_name = "peliculas" # 👈 para registrar el namespace

urlpatterns = [
    path('', app.index, name="index"), # 👈 vinculamos la ruta a una vista
]

Si es importante que app_name contenga el nombre de nuestra aplicación.
Es deber indicar a cada ruta su respectivo name. 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
urlpatterns = [
    ...
    #    👇 quite 'hogar/', ahora el saludo es lo primero que veremos
    path('', include("hogar.urls", namespace="hogar")),
    #        👇 ruta             👇 incluimos               👇 mismo que app_name
    path('peliculas/', include("peliculas.urls", namespace="peliculas")),
]

Ahora, iniciamos nuestro servidor, para ver cómo va la cosa.

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.

Divide y conquistaras

Este capítulo se ha hecho muy largo, vamos a continuar en el siguiente capitulo.


Siguiente
Previo