确定Django中的空模板变量

时间:2012-09-20 06:44:13

标签: python django mongodb django-templates pymongo

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

我通过

测试了空变量
{% ifnotequal narratives.narrative_text '' %}

我注意到控件进入此块,但

时没有打印/空白
{{  narratives.narrative_text }} 
遇到了

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

我看了the docs,发现无效/空模板变量被''替换。

医生说

  

模板系统会插入TEMPLATE_STRING_IF_INVALID设置的值。

我们是否必须明确将其输入settings.py?我试过这样做,但我仍然无法使其发挥作用。

c=Context({ 
    "narratives_list":all_narratives,
    "patient_name":care_seeker_name
})
pymongo数据库调用返回

all_narratives

{%  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 %}

6 个答案:

答案 0 :(得分:29)

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

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

答案 1 :(得分:4)

我认为只需使用{% if narratives.narrative_text %}即可。它将使用Python的隐式false,它适用于空字符串,空数组,空字符串,NoneFalse0等。

答案 2 :(得分:2)

您可以撰写Custom template filteris_empty进行检查。如果变量为空,则返回false;如果值存在,则返回true

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

答案 3 :(得分:1)

只需使用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 %}

答案 4 :(得分:0)

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

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

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

我也遇到类似的困难。 希望对您有所帮助。

答案 5 :(得分:-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变量和条件等