web-dev-qa-db-ja.com

Django

テンプレートで使用したときに変数が空であるかどうかを判断できません。コレクション全体を繰り返し処理し、それぞれで変数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 %}
12
sbose

長さをパイプでつなぎ、その値に対してテストを行います。

{% if narratives.narrative_text|length > 0 %}
    {{ narratives.narrative_text }}
{% else %}
    None
{% endif %}
31
Wade Williams

{% if narratives.narrative_text %}を使うだけだと思います。 Pythonの暗黙のfalseを使用します。これは、空の文字列、空の配列、空のdict、NoneFalse0などに適用されます。

5

あなたは書くことができます カスタムテンプレートフィルターis_empty チェックする。変数が空の場合はfalseを返し、値が存在する場合はtrueを返します。

{% if narratives.narrative_text|is_empty %}
    # dosomthing 
{% else %}
    # dosomthing 
{% endif %}
2
Ahsan

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 %}
2
Dmitriy

最善かつ明白な解決策は、Djangoテンプレート言語:

{% if objects is not None %}
    {% for obj in objects %}
        {{obj}}   // Do your stuff here
    {% empty %}
        No results.    // No results case
    {% endfor %}
{% endif %}

変数objectsが設定されていない場合、何も出力されません。

私も同様の問題を抱えていました。それが役に立てば幸い。

1
decadenza