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 firstof
proberen:
{% 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 default
en default_if_none
kunnen 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.