img
Desarrollo

Minificar recursos con Django usando "firstof"

Mar 13, 2021   Carlos Alberto Lozada
   

Al desarrollar aplicaciones, uno de los indicadores de calidad a considerar por los programadores, es la velocidad de carga. Un sitio de carga lenta puesto en producción genera múltiples insatisfacciones en la experiencia del usuario.

La velocidad de carga se puede mejorar con varias técnicas, una de ellas es minificar recursos, lo cual busca reducir el peso de los archivos de código fuente permitiendo eliminar bytes innecesarios en la aplicación.

El framework Django ofrece muchas herramientas destinadas a obtener un sitio rápido,escalable y seguro.

En este articulo te muestro el uso de la herramienta "firstof", la cual provee  flexibilidad en la reducción de código.

La documentación oficial  indica, que esta herramienta muestra la primera variable del argumento que no es falso.

Condiciones para considerar un argumento verdadero o que no es falso:

  • Existe
  • No está vacío
  • No es un valor booleano "false"
  • No es un valor numérico cero

Importante: El argumento no genera nada si todas las variables pasadas son "falsas"

Su sintaxis es la siguiente:

{% firstof var1 var2 var3 %}

Que es equivalente a:

{% if var1 %}
{{ var1 }}
{% elif var2 %}
{{ var2 }}
{% elif var3 %}
{{ var3 }}
{% endif %}

Veamos esta teoría en la práctica:

1.- Definimos nuestra función en la vista del proyecto.

Para este ejemplo, utilizaremos la siguiente: views.py


def home(request):
variables = {
"var1" : None,
"var2" : None,
"var3" : "cazzcode"
}

return render(request, 'home.html', variables)


Podemos observar que es una función que contiene un diccionario de variables (var1,var2,var3).

Las variables var1 y var2 no contienen nada, la variable 3 contiene un string de valor denominado 'cazzcode'.

Esta herramienta como indica su teoría va a buscar en todo el diccionario aquella variable que no sea falsa.

Estas variables son enviadas a la plantilla home.html.

2.- En la plantilla home.html colocaremos los siguiente códigos.

Para poder apreciar bien el cambio lo dividimos en dos escenarios

Input

Escenario A

InputOutput

<
h2>Escenario A</h2>
<p>
{% if var1 %}
{{var1}}
{% elif var2 %}
{{var2}}
{% elif var3 %}
{{var3}}
{% else %}
No data
{% endif %}
</p>

 

cazzcode

Escenario B

Input
Output


<h2>Escenario B</h2>
<p>
{% firstof var1 var2 var3 "No data" %}
</p>


cazzcode

Como se puede observar se obtiene el mismo resultado, aunque detrás de escena fueron originados por códigos distintos.

Para poder obtener el resultado, en el Escenario A se escribieron  9 lineas de código, mientras que en el Escenario B sola una sola linea de código.

Finalmente, como puedes apreciar la herramienta "firstof"  brinda una solución que reduce la cantidad de código en nuestras aplicaciones. 

Contenido Extra

Una de las ventajas de la programación es que se pueden obtener mismos resultados de diferentes maneras, es por ello que acá te dejo un contenido extra (aunque no es un ejemplo con la herramienta "Firstof"), te muestro otro camino con el cual obtienes el mismo resultado con menos cantidad de código que en el Escenario A.

Escenario C

Input Output
 

<h2>Escenario C</h2>
{% for key,value in variables.items %}
{% if value %}
<li>{{ value }}</li>
{% endif %}
{% endfor %}

 
  • cazzcode

Espero sea de utilidad esta información, te invito a seguir explorando Django. 

Por acá te dejo el repositorio GitHub para que puedas practicar con el código. 

Sigamos en contacto

Carlos Lozada

<Que tengas una programación de marca mayor/>

Destacados