2016-12-20 23 views
1

私は、次のようなさまざまなパイソン三項演算子と遭遇しました:PythonのHTMLテンプレートは、三項演算

a if b else 0 

が、私はDjangoのHTMLテンプレート内に含まれるようにしようとしたとき、それは動作しませんでした

{% a if b else 0 %} 

ここで私が使用してすることがあります正確なコードですが、動作しません。

{% 'error' if form.title.errors else '' %} 

または

{% form.title.errors ? 'error' : '' %} 

それは私がelseステートメントを追加する場合は特に、私の意見ではかさばる見えるので、私はいつも

{% if form.title.errors %}error{% endif %} 

を行うには好きではありません。

提案がありますか?それとも私はそれに固執すべきですか?あなたはyesnoフィルタ(documentation)を使用して、あなたがしたい多かれ少なかれ振る舞いを得ることができます

答えて

3

:ジャンゴで

{{ form.title.errors|yesno:"errors," }} 
+0

すばらしい!これを試みたが、あなたは挿入する必要があることを知りませんでした最後にカンマ –

2

を、templatetagsはちょうど{% if %}{% else %}{% endif %}をサポートしています。あなたが使用しない場合:

{{ error|default:'' }} 
をとDjangoテンプレートのテストが怒鳴るです::

{% if form.title.errors %}error{% endif %} 

あなたは試すことができます

...from django.template import Context, Template 
...from django.conf import settings 
...settings.configure() 
...t = Template("My name is: {{ name|default:'anonymous' }} ") 

デフォルトした場合:

...t.render(Context({})) 

返信:

'My name is anonymous ' 

ている場合名前:

...t.render(Context({"name": "John"})) 

結果:

'My name is John ' 

もっと読むhttps://docs.djangoproject.com/en/1.9/ref/templates/