1. ホーム
  2. django

Djangoのテンプレート。もし false?

2023-08-31 15:15:13

質問

ある変数が であるかどうかを調べるには?

{% if myvar == False %}

うまくいかないようです。

私は特に、それがPythonの値 False . この変数は空の配列である可能性もあり、それは ではなく ではありません。

どのように解決するのですか?

Django 1.10 (リリースノート) が追加されました。 isis not という比較演算子を if タグに追加されました。この変更により、テンプレートでのアイデンティティのテストが非常に簡単になりました。

In[2]: from django.template import Context, Template

In[3]: context = Context({"somevar": False, "zero": 0})

In[4]: compare_false = Template("{% if somevar is False %}is false{% endif %}")
In[5]: compare_false.render(context)
Out[5]: u'is false'

In[6]: compare_zero = Template("{% if zero is not False %}not false{% endif %}")
In[7]: compare_zero.render(context)
Out[7]: u'not false'

古い Django を使っている場合、バージョン 1.5 の時点では (リリースノート) をテンプレートエンジンが解釈します。 True , FalseNone を対応するPythonのオブジェクトとして使用します。

In[2]: from django.template import Context, Template

In[3]: context = Context({"is_true": True, "is_false": False, 
                          "is_none": None, "zero": 0})

In[4]: compare_true = Template("{% if is_true == True %}true{% endif %}")
In[5]: compare_true.render(context)
Out[5]: u'true'

In[6]: compare_false = Template("{% if is_false == False %}false{% endif %}")
In[7]: compare_false.render(context)
Out[7]: u'false'

In[8]: compare_none = Template("{% if is_none == None %}none{% endif %}")
In[9]: compare_none.render(context)
Out[9]: u'none'

期待したようにはいきませんが。

In[10]: compare_zero = Template("{% if zero == False %}0 == False{% endif %}")
In[11]: compare_zero.render(context)
Out[11]: u'0 == False'