Elemento 'include' del template de Django

imagen / Markus Tacker
  
14 de Febrero de 2017   0  

Como muchas conocerán, Django tiene varias funcionalidades en su motor de templates bastante buenas y muy útiles, uno de ellos es el elemento "include", que tal vez te sonará muy familiar ya que lo podemos encontrar en varios frameworks web como AngularJs.

Hoy platicaremos de este elemento de una manera sencilla y específica.

Funcionamiento básico.

Este tag template en su función mas básica nos permite incluir un "trozo" de html proveniente de un archivo .html, para que te puede servir? bueno te doy varios casos de uso:

 

  1. Crea un html que tenga la estructura de menú de navegación (navbar), esto te permitirá separar el html en partes importantes de tu plantilla y sobre todo poder tener multiples tipos de navbar dependiendo de alguna situación en especial.

Ejemplo: 

{% if tipo_usuario == 'admin' %}

   {%include 'navbar_admin.html'%}

{% else %}

{%include 'navbar_user.html'%}

{% endif %}

 

       2. Maneja tu html principal con varios includes para hacer mas legible tu código, por ejemplo si tienes 2 secciones, un div#asideleft y un div#contenido, pudieras poner un include en cada sección para que tu equipo de desarrollo pueda identificar rápidamente el contenido de cada uno de éstos y además les será mas fácil trabajar en porciones mas pequeñas de html. 

Ejemplo:

<div class="col-md-4" id="asideleft">

{% include 'menu_lateral.html' %}

</div">

<div class="col-md-8" id="contenido">

{% include 'contenido.html' %}

</div>

Pasando parámetros a templates con el argumento WITH.

Algo interesante de este tag es que puedes pasar parámetros al contexto propio del elemento html que estas incluyendo, esto permite pasar elementos o variables que recibimos por get o por contexto de la vista al html del include, por ejemplo:

 

{% include 'perfil_usuario.html' with name='Isis' apellido='Ake' %}

Dentro del template perfil_usuario.html podremos hacer lo siguiente:

<div>

<p> Mi nombre es {{name}} {{apellido}} </p>

</div>

Si quisieras que sólamente esas variables puedan ser utilizadas por el template utilizarías el argumento ONLY

por ejemplo:

{% include 'perfil_usuario.html' with name='Isis' only %}

En este ejemplo ninguna variable adicional podrá ser utilizada mas que la variable name.

¿Pythonízame utiliza esto?

La respuesta es SI, y lo utilizamos tal vez no en gran medida pero para el caso de la sección Jobs existen dos botones principales: 

 

 

Los dos botones encerrados son un include en el cual se le pasa un parámetro donde nos indica si un usuario está o nó logueado, algo así como:

 

{% include 'botones_job.html' with is_login=true/false %} # se le pasa true o false dependiendo

 

Y en el html ya podemos hacer la validación si mostrar ambos botones o no, y tambien saber si el usuario no está logueado mostrar un modal que indica al usuario que para hacer un job necesitas estar logueado.

 

 

Espero que estos ejemplos te ayuden a pensar en cómo pudieras aprovechar esta característica en tus proyectos y así modularizar no sólo tu código python sino que tambien tus elementos HTML y mejorar la escabilidad de mantenimiento.

Si quieres conocer mas sobre estas etiquetas de template puedes consultar la documentación oficial.

https://docs.djangoproject.com/en/1.10/ref/templates/builtins/

 

 



Gaspar Dzul

Desarrollador Front End y Móvil.

Etiquetas