Djangoテンプレートで使用できる3項演算子(条件?true-value:false-value)があるかどうか疑問に思っていました。python 1つ(条件の場合は真の値、それ以外の場合は偽の値)しかし、Djangoテンプレート内でそれを使用して、いずれかの値によって指定されたHTMLを表示する方法がわかりません。任意のアイデア?
テンプレート内で三項演算子が必要なのはなぜですか? {% if %}
および{% else %}
で十分です。
または、firstof
タグを試すこともできます。
{% firstof var1 var2 var3 %}
これは、True値に評価されるvar1、var2、またはvar3の最初の1つを出力します。
Yesnoフィルターを使用できます。
{{ value|yesno:"yeah,no,maybe" }}
https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#yesno
それらがまだここで言及されていないからといって、組み込みのテンプレートタグdefault
とdefault_if_none
は単純な状況で役立ちます。
default
値がFalseと評価された場合、指定されたデフォルトを使用します。それ以外の場合は、値を使用します。
例えば:
{{ value|default:"nothing" }}
値が ""(空の文字列)の場合、出力は何も行われません。
default_if_none
値がNoneの場合に限り、指定されたデフォルトを使用します。それ以外の場合は、> valueを使用します。
空の文字列が指定された場合、デフォルト値は使用されないことに注意してください。空の文字列をフォールバックしたい場合は、デフォルトのフィルターを使用してください。
例えば:
{{ value|default_if_none:"nothing" }}
値がNoneの場合、出力は文字列 "nothing"になります。
https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#default
Djangoの三項演算子をタグとして実装しました。参照 https://github.com/alexei/Django-template-extensions 使用できますなので:
{% ?: exp1 exp2 exp3 %}
{% ?: exp1 exp2 %}
または:
{% iif exp1 exp2 exp3 %}
{% iif exp1 exp2 %}
Pythonicではないのですが、yesno
フィルターよりも意味があることがわかりました。
あなたはしません。 Django {% if %}
templatetagがサポートを開始したばかりです==
、and
など。{% if cond %}{% else %}{% endif %}
は今のところコンパクトです。
pythonおよび/またはトリックがうまくいくのだろうか?
condition and true_value or false_value
三項演算子のように動作します-条件がTrueに評価された場合はtrue_valueを出力し、そうでない場合はfalse_valueを出力します。