テンプレートで使用したときに変数が空であるかどうかを判断できません。コレクション全体を繰り返し処理し、それぞれで変数narrative_text
を探しています。
空の変数をテストしました
{% ifnotequal narratives.narrative_text '' %}
コントロールがこのブロックに入っていることに気付きましたが、
{{ narratives.narrative_text }}
に遭遇しました。
では、変数が空かどうかを正確に確認するにはどうすればよいですか?
docs を読んだところ、無効/空のテンプレート変数が''
に置き換えられていることがわかりました。
ドキュメントによると
テンプレートシステムは、
TEMPLATE_STRING_IF_INVALID
設定の値を挿入します。
それをsettings.py
に明示的に入力する必要がありますか?私はそうしようとしましたが、それでもそれを機能させることができませんでした。
c=Context({
"narratives_list":all_narratives,
"patient_name":care_seeker_name
})
all_narratives
は、pymongoデータベース呼び出しによって返されます。
{% for narratives in narratives_list %}
<tr>
<td class = "date_col">
7 Aug, 2012
</td>
{% ifnotequal narratives.narrative_text '' %}
<td>
<div class = "narrative">
( text narrative )
<b>
{{ narratives.about }}
</b>
<br><br>
{{ narratives.narrative_text }}
</div>
</td>
{% else %}
<td>
<div class="scans">
<div class="gallery">
<b> {{ narratives.about }}</b>
<br><br>
<a href="https://udhc1-nodejstest.rhcloud.com/my_image/{{ narratives.file_id }}">
<img src="https://udhc1-nodejstest.rhcloud.com/my_image/{{ narratives.file_id }}" width="72" height="72" alt="" />
</a>
</div>
</div>
</td>
{% endifnotequal %}
長さをパイプでつなぎ、その値に対してテストを行います。
{% if narratives.narrative_text|length > 0 %}
{{ narratives.narrative_text }}
{% else %}
None
{% endif %}
{% if narratives.narrative_text %}
を使うだけだと思います。 Pythonの暗黙のfalseを使用します。これは、空の文字列、空の配列、空のdict、None
、False
、0
などに適用されます。
あなたは書くことができます カスタムテンプレートフィルター 、is_empty
チェックする。変数が空の場合はfalse
を返し、値が存在する場合はtrue
を返します。
{% if narratives.narrative_text|is_empty %}
# dosomthing
{% else %}
# dosomthing
{% endif %}
Django 2.1.3およびpython 3.5および3.7を使用して、自分のコードで次のことが機能することを確認しました。
{% if narratives.narrative_text %}
# do something
{{ narratives.narrative_text }}
{% else %}
# do something else
None # displays "None"
{% endif %}
最善かつ明白な解決策は、Djangoテンプレート言語:
{% if objects is not None %}
{% for obj in objects %}
{{obj}} // Do your stuff here
{% empty %}
No results. // No results case
{% endfor %}
{% endif %}
変数objects
が設定されていない場合、何も出力されません。
私も同様の問題を抱えていました。それが役に立てば幸い。