14

在模板中使用时,我无法确定变量是否为空。我已经遍历了整个集合,并且在每个集合中我都在寻找一个 variable narrative_text

我测试了空变量

{% ifnotequal narratives.narrative_text '' %}

我注意到控件进入了这个块,但是当

{{  narratives.narrative_text }} 

遇到。

那么,如何精确检查变量是否为空?

我阅读了文档,发现无效/空模板变量被替换为''.

医生说

模板系统插入设置的值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 %}
4

6 回答 6

40

通过长度管道并针对该值进行测试。

{% if narratives.narrative_text|length > 0 %}
    {{ narratives.narrative_text }}
{% else %}
    None
{% endif %}
于 2013-06-25T21:24:37.443 回答
7

只是使用{% if narratives.narrative_text %},我想。它将使用 Python 的隐式 false,它适用于空字符串、空数组、空字典、、None等。False0

于 2012-09-20T06:55:37.357 回答
4

刚刚通过我自己的代码使用 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 %}
于 2018-11-06T12:51:57.157 回答
2

您可以编写自定义模板过滤器is_empty以进行检查。false如果变量为空且true值存在则返回。

{% if narratives.narrative_text|is_empty %}
    # dosomthing 
{% else %}
    # dosomthing 
{% endif %}
于 2012-09-20T07:13:35.677 回答
2

我认为最好和明显的解决方案是使用 Django 模板语言:

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

如果未设置变量objects,则不会打印任何内容。

我也有类似的困难。希望能帮助到你。

于 2019-01-30T13:20:33.063 回答
-1

我使用了 jijnja,它非常相似且更简单,我认为如果你这样做的话它会起作用

{% if not narratives.narrative_text %}
  // do something 
{% else %}
 // do something else  with or without {{ narratives.narrative_text }}
{% endif %}

它使用 python 隐式True/False,None,等来完成这项工作。用最简单的术语来说,在里面使用 python 变量{{ }}和条件等{% %}

于 2012-09-20T07:59:59.680 回答