variable template tag for examples bootstrap python django templates ternary-operator

python - tag - django templates html



Operador Ternario de Django Template (6)

Acabo de implementar el operador ternario para Django como una etiqueta, consulte https://github.com/alexei/django-template-extensions . Puede usarlo como:

{% ?: exp1 exp2 exp3 %} {% ?: exp1 exp2 %}

O:

{% iif exp1 exp2 exp3 %} {% iif exp1 exp2 %}

Descubrí que tiene más sentido que el filtro yesno , aunque realmente no es tan pitónico.

Me preguntaba si había un operador ternario (condición? Verdadero-valor: falso-valor) que podría usarse en una plantilla de Django. Veo que hay uno pitón (valor verdadero si condición más valor falso) pero no estoy seguro de cómo usarlo dentro de una plantilla Django para mostrar el html dado por uno de los valores. ¿Algunas ideas?


Me pregunto si la pitón y / o el truco funcionarían.

condition and true_value or false_value

se comporta como el operador ternario: emite true_value si la condición se evalúa como True y false_value si no es así.



Simplemente porque aún no se han mencionado aquí: las etiquetas de plantilla incorporadas por default , y default_if_none puede ser útil en circunstancias simples:

defecto

Si el valor se evalúa como False, usa el valor predeterminado dado. De lo contrario, usa el valor.

Por ejemplo:

{{ value|default:"nothing" }}

Si el valor es "" (la cadena vacía), la salida no será nada.

default_if_none

Si (y solo si) el valor es Ninguno, usa el valor predeterminado dado. De lo contrario, usa el> valor.

Tenga en cuenta que si se da una cadena vacía, no se usará el valor predeterminado. Use> el filtro predeterminado si quiere recurrir a cadenas vacías.

Por ejemplo:

{{ value|default_if_none:"nothing" }}

Si el valor es Ninguno, la salida será la cadena "nada".

https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#default


Tu no La plantilla Django {% if %} acaba de comenzar a admitir == , and , etc. {% if cond %}{% else %}{% endif %} es tan compacta como es posible por el momento.


¿Por qué necesitarías un operador ternario dentro de una plantilla? {% if %} y {% else %} son todo lo que necesita.

O podrías probar la firstof etiqueta:

{% firstof var1 var2 var3 %}

que genera el primero de var1, var2 o var3 que evalúa a un valor True.