Django-sjabloon ternaire operator

Ik vroeg me af of er een ternaire operator (voorwaarde ? true-value: false-value) was die in een Django-sjabloon kon worden gebruikt. Ik zie dat er een python-versie is (true-value if condition else false-value) maar ik weet niet zeker hoe ik dat in een Django-sjabloon moet gebruiken om de html weer te geven die door een van de waarden wordt gegeven. Enig idee?


Antwoord 1, autoriteit 100%

U kunt het ja-nee-filter gebruiken:

{{ value|yesno:"yeah,no,maybe" }}

Meer informatie hier


Antwoord 2, autoriteit 41%

Waarom zou u een ternaire operator in een sjabloon nodig hebben? {% if %}en {% else %}zijn alles wat je nodig hebt.

Of je kunt de tag firstofproberen:

{% firstof var1 var2 var3 %}

die de eerste van var1, var2 of var3 uitvoert die resulteert in een True-waarde.


Antwoord 3, autoriteit 25%

Gewoon omdat ze hier nog niet zijn genoemd: de ingebouwde sjabloontags defaulten default_if_nonekunnen in eenvoudige omstandigheden handig zijn:

standaard

Als de waarde False is, wordt de opgegeven standaard gebruikt. Gebruik anders de waarde.

Bijvoorbeeld:

{{ value|default:"nothing" }}

Als de waarde “” is (de lege tekenreeks), is de uitvoer niets.

default_if_none

Als (en alleen als) waarde Geen is, wordt de opgegeven standaardwaarde gebruikt. Gebruik anders de >waarde.

Houd er rekening mee dat als een lege tekenreeks wordt opgegeven, de standaardwaarde niet wordt gebruikt. Gebruik >het standaardfilter als u wilt terugvallen op lege strings.

Bijvoorbeeld:

{{ value|default_if_none:"nothing" }}

Als de waarde Geen is, is de uitvoer de tekenreeks “niets”.

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


Antwoord 4, autoriteit 5%

Ik heb zojuist de ternaire operator voor Django als tag geïmplementeerd, zie https://github .com/alexei/django-template-extensions
Je kunt het gebruiken als:

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

Of:

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

Ik kwam erachter dat het logischer is dan het yesno-filter, ook al is het echt niet zo Pythonisch.


Antwoord 5, autoriteit 4%

Dat doe je niet. De sjabloontag van Django {% if %}is nog maar net begonnen met het ondersteunen van ==, and, enz. {% if cond %}{% else %}{% endif %}is zo compact als het maar kan.


Antwoord 6, autoriteit 2%

Ik vraag me af of de python en/of truc zouden werken?

condition and true_value or false_value

gedraagt ​​zich als de ternaire operator – voert true_value uit als de voorwaarde True oplevert, en false_value als dat niet het geval is.

Other episodes