Montando una web sencilla con Django (parte 2)

Hace unos días, a petición de un contacto en Linkedin, monté un pequeño ejemplo de como Django podía gestionar un sencillo sitio web. Muy sencillo realmente, una página de inicio y otra secundaria, nada más allá.

La idea era ver de forma rápida, como trabaja Django con las vistas, urls y plantillas, para reaprovechar el código todo lo posible.

Hoy vamos a darle un par de vueltas de tuerca más.

Vamos a modificar el ejemplo para usar una única plantilla de página, con un método que recogerá como parámetro el nombre de la página que se quiere mostrar y en función de ello, pasará los contenidos de la misma como contexto.

Esto en realidad, es más simple de ver que de explicar.

Una plantilla para mostrarles a todos

En lugar de tener un código para la página principal y otro para la página de contacto, en esta ocasión vamos a tener un único código, donde a través de las variables necesarias, mostraremos el contenido.

Como vemos, tenemos un código html que está cargando el header y el footer que vimos en el ejemplo anterior y entre ellos, se identifican dos variables {{ titulo_pagina}} y {{ contenido_pagina }}, que tal como su nombre indica, nos motrarán los datos que les pasemos.

Como hemos de pasar a la vista el nombre de la página, para que el metodo correspondiente lo recoja y muestre el contenido en base a eso, habrá que modificar el fichero principal/urls.py para que la url, sea un parámetro:

De esta forma, cuando accedamos a una url, esta llamará al método mostrar_pagina de la vista de la apliación:

Este método, recoge el nombre la página y crea el contexto que se le pasa (titulo_pagina y contenido_pagina).

El contenido de la página, está definido en otro método (podría haber estado en uno solo con un if.. else, pero así queda algo más claro (creo yo).

De esta forma, el método mostrar_pagina llama al método obtener_contenido y devuelve en cada situación, el contenido de la página a la que se ha llamado.

Es más, la última linea del metodo obtener_contenido, controla que exista la página a la que se llama y si no es así, muestra un mensaje de error:

Hay que tener en cuenta, que para pasar correctamente las urls al método mostrar_pagina, hemos de hacer unos cambios en el menú de navegación que tenemos configurado en header.html.

Además de la llamada a la url como tal, hemos de pasarle el nombre de la página. Algo similar a esto:

De esta forma, llamamos al método mostrar_pagina, pero también le enviamos el nombre de la página que queremos abrir.

Y eso es todo de momento.

Os dejo el código actualizado en GitHub para que podáis seguirlo y prometo que habrá nuevas versiones del mismo.

La próxima, obviamente, tratará sobre como recoger el contenido de las páginas desde una tabla en una base de datos.

Publicada el
Categorizado como Desarollo Etiquetado como

Por Jose Manuel Sanz Prieto

Desarrollador web. En este blog hablo de fotografía, programación con Django, Python, PHP y privacidad.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *