Определить пустую переменную шаблона в 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 %}

4 ответов


Pipe по длине и выполните тест против этого значения.

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

просто использовать {% if narratives.narrative_text %}, Я думаю. Он будет использовать неявное false Python, которое применяется для пустых строк, пустых массивов, пустых диктов,None, False, 0 etc..


можно писать пользовательский шаблон фильтра, is_empty чтобы проверить. Возвращение false если переменная пуста, а true если значение существует.

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

я использовал jijnja что очень похоже и проще, и я думаю, что это сработает, если вы это сделаете

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

он использует Python implicit True/False,None, etc для выполнения работы. Проще говоря, используйте переменные python внутри {{ }} и conditionals, etc внутри {% %}