¿Como usar if en template de Django?
Author: aprender_djangoviews: 77
Condicionales con {% if %} en Django Templates
La etiqueta {% if %} se utiliza para evaluar variables y mostrar contenido HTML solo si se cumplen ciertas condiciones. Es la herramienta principal para personalizar la experiencia del usuario en la plantilla.
Sintaxis Básica
Toda estructura condicional debe cerrarse siempre con la etiqueta {% endif %}.
{% if usuario.is_authenticated %}
<p>Bienvenido de nuevo, {{ usuario.username }}.</p>
{% endif %}
El uso de else y elif
Puedes encadenar múltiples condiciones de forma lógica, muy similar a cómo lo haces en Python.
{% if calificacion >= 90 %}
<p>Excelente trabajo.</p>
{% elif calificacion >= 70 %}
<p>Aprobado.</p>
{% else %}
<p>Necesitas mejorar.</p>
{% endif %}
Operadores Disponibles
Django permite utilizar operadores lógicos y de comparación dentro de los tags:
| Operador | Descripción |
|---|---|
== |
Igual a |
!= |
Diferente de |
<, > |
Menor que, Mayor que |
<=, >= |
Menor/Mayor o igual que |
and |
Las dos condiciones deben ser ciertas |
or |
Al menos una condición debe ser cierta |
not |
Niega el valor de la variable |
in |
Verifica si un elemento está en una lista o string |
Ejemplo combinado:
{% if edad >= 18 and suscripcion_activa %}
<p>Acceso concedido al contenido premium.</p>
{% endif %}
Evaluación de Verdad (Booleanos)
En Django, un valor se evalúa como falso si:
- La variable no existe en el contexto.
- Es una lista, cadena o diccionario vacío
[],"",{}. - Es el valor
None,Falseo el número0.
Cualquier otro valor se considerará verdadero.
{% if productos %}
<p>Hay artículos disponibles.</p>
{% else %}
<p>Agotado temporalmente.</p>
{% endif %}
Uso de Filtros en Condiciones
Puedes aplicar filtros a las variables antes de compararlas. Uno de los más comunes es length.
{% if carrito|length > 0 %}
<a href="/checkout">Ir a pagar</a>
{% endif %}
Operadores de Agrupación
Si necesitas crear condiciones complejas, puedes usar paréntesis para agrupar la lógica y asegurar que se evalúe en el orden correcto:
{% if (es_admin or es_editor) and no_esta_baneado %}
<p>Tienes permisos de edición.</p>
{% endif %}