Una de las características más poderosas de Django es su capacidad para reutilizar código dinámicamente. La herencia de plantillas permite compartir código entre plantillas principales y secundarias. Reduce en gran medida la duplicación de esfuerzos.
Django tiene su lenguaje de plantillas diseñado para combinarse con HTML. Le resultará fácil trabajar con las plantillas de Django si ha trabajado antes con código HTML. Otros lenguajes de plantilla basados en texto como Smarty o Jinja2 tienen una sintaxis similar.
Aprendamos más sobre la herencia de plantillas construyendo un proyecto Django.
¿Qué es una plantilla de Django?
En Django, una plantilla es un archivo de texto que puede generar cualquier formato basado en texto, como HTML, XML o CSV.
Etiquetas de plantilla de Django controlar la lógica que encierra variables y valores en la plantilla. Las etiquetas ayudan a separar la lógica del programa de la presentación de la plantilla. También ayudan a mantener sus plantillas limpias y organizadas.
Django tiene muchas etiquetas integradas, que parecen {% etiqueta %}. Las etiquetas son útiles de muchas maneras. Pueden crear texto en la salida, realizar bucles y cargar información en la plantilla.
Usará etiquetas en este proyecto para demostrar la herencia de plantillas.
Crear un proyecto Django
Para empezar, crear un proyecto Django. Crear una aplicación llamada plantillas. Una vez que lo haya hecho, estará listo para crear una función de vista para la aplicación, una ruta de URL y plantillas para demostrar la herencia de plantillas.
Crear una función de vista
Primero, crea un vista función que representa las plantillas. En este caso, renderizarás el índice.html plantilla. Importar el prestar método de los atajos de Django. A continuación, cree una función de vista denominada índice que devuelva y represente la plantilla de índice.
de django.atajos importar prestar
# Crea tus vistas aquí.
definitivamenteíndice(pedido):
volver renderizar (solicitud,'índice.html')
Crear una ruta de URL
A continuación, cree un ruta URL para que la función de visualización muestre las plantillas. Importar el camino función de django.urls y el vista función de vistas.py archivo. Luego importa ajustes y estático para representar las imágenes y los medios que pueda tener en las plantillas.
de django.urls importar camino
de. importar puntos de vista
de django.conf importar ajustes
de django.conf.urls.estática importarestático
urlpatrones=[
camino('',vistas.index, nombre='índice'),
]
siajustes.DEPURAR:
patrones de URL+=estático(ajustes. MEDIA_URL, document_root=configuración. MEDIA_ROOT)
Crear plantillas
Ahora que tienes la vista y URL ruta, cree las plantillas. Para demostrar la herencia de plantillas, cree un base.html como plantilla principal. El base.html El archivo tendrá elementos generales con los que desea compartir índice.html, la plantilla secundaria.
{% cargar arranque5 %}
{% carga estático %}
<!DOCTYPE html>
<idioma html="es">
<cabeza>
<juego de caracteres meta="UTF-8">
<meta http-equiv="Compatible con X-UA" contenido="IE = borde">
<metanombre="mirador" contenido="ancho = ancho del dispositivo, escala inicial = 1.0">
<!-- títulos -->
{% si título %}
<título> Plantillas heredadas {{title}}</title>
{% demás %}
<título> Plantillas heredadas </title>
{% terminara si %}
{% estilos de bloque%}
{% bootstrap_css%}
<enlace rel="hoja de estilo" href="{% estático 'css/estilo.css' %}">
{% bloque final %}
</head>
<cuerpo>
{% incluir 'barra de navegación.html' %}
{% contenido del bloque %} {% bloque final %}
<!-- Enlaces de arranque -->
<secuencia de comandos src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integridad="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sa7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" origen cruzado ="anónimo"></script>
</body>
</html>
Primero, cargue Bootstrap y las dependencias estáticas en el base.html plantilla. Puede use el marco Bootstrap con su proyecto Django para diseñar las páginas HTML. La dependencia estática cargada en la parte superior cargará los activos incluidos en la carpeta estática.
Las plantillas de Django le permiten pasar bits de lógica responsables de mostrar el contenido. Las etiquetas de plantilla constan de texto rodeado por "{%" y "%}" caracteres. El si / más La declaración comprueba las condiciones en la función de vista. Si la condición es verdadera, representa el contenido del primer bloque; si es falso, representará el contenido en el segundo.
El base.html El archivo también representará el contenido de barra de navegación.html justo donde colocas las etiquetas de plantilla. Eso significa que cada vez que extienda el base.html, barra de navegación.html también se hereda. Cualquier plantilla que amplíe la base.html heredará cualquier elemento con un {% incluir %} etiqueta.
Cualquier texto rodeado de {{}} es una variable de plantilla. Las variables de plantilla son datos dinámicos proporcionados por funciones de visualización. Django también usa etiquetas de bloque que usan una etiqueta abierta, como {% contenido del bloque %}y una etiqueta de cierre, como {% bloque final %}.
Las etiquetas de bloque permiten que las plantillas secundarias anulen el contenido de las plantillas principales. En este caso, el índice.html puede reemplazar su contenido en el área delimitada por etiquetas de bloque. No interferirá con el otro. base.html componentes
Apliquemos la lógica a la índice.html
{% extiende 'base.html' %}
{% contenido del bloque %}
<clase div="centro de texto del contenedor" estilo="color blanco">
<h1>Soy la plantilla de índice</h1>
<pag>Heredé Bootstrap y la barra de navegación de base.html</pag>
</div>
{% bloque final %}
En el índice.html plantilla, utilice la {% extender %} etiqueta para extender los componentes del base.html. Dentro de las etiquetas de bloque {% contenido del bloque %}, escribe todo tu código.
En el índice.html plantilla, tiene un H1 y un elemento de párrafo. Puede usar las etiquetas de plantilla dentro de los divs para llamar variables desde el vista función.
Herencia de plantilla de prueba en el navegador
Ahora puede ejecutar el servidor. Una vez que lo haya hecho, verifique en el navegador para ver si el índice.html El archivo heredó los elementos de base.html. Eso incluye enlaces Bootstrap y el barra de navegación.html plantilla.
El índice.html El archivo debe heredar los estilos de barra de navegación y Bootstrap de la plantilla base. Si es así, ha utilizado correctamente la herencia de plantillas. Sin él, habría tenido que agregar la barra de navegación y los enlaces de Bootstrap donde los necesitaba.
Además, cualquier cambio que realice en el base.html se reflejará en todas las plantillas a las que se extiende. Este principio es importante en el manejo de errores. Puede identificar fácilmente las plantillas con errores.
La herencia de plantillas es una de las muchas formas en que Django implementa el principio Don't Repeat Yourself (DRY). Hará que su desarrollo sea mucho más fácil y simple.
Por qué debería usar la herencia de plantillas de Django
La herencia de plantillas de Django es una de sus características más complejas. Puede tomar algún tiempo entenderlo, pero una vez que lo hace, ahorra mucho esfuerzo de desarrollo.
La herencia de plantillas le permite compartir código entre plantillas principales y secundarias. Esto garantiza que no escriba código repetitivo en sus plantillas.
La herencia de plantillas es importante en grandes proyectos de Django. En tales casos, hay muchas aplicaciones y muchas plantillas para diseñar. Las plantillas principales le brindan mucho control sobre los otros componentes de la aplicación.
Al aprender el sistema de plantillas de Django, puede disfrutar escribiendo código limpio y potente.