繁体   English   中英

确定Django中的空模板变量

[英]Determine empty template variable in Django

在模板中使用时,我无法确定变量是否为空。 我已经遍历整个集合,每一个我都在寻找变量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 %}

通过长度管道并根据该值进行测试。

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

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

您可以编写自定义模板过滤器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则不会打印任何内容。

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

我已经使用了jijnja ,这是很相似和更简单的,我认为如果你这样做会有用

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

它使用python隐式True/False,None,等来完成这项工作。 简单来说,在{{ }}内使用python变量,在{% %} {{ }}内使用条件等

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM