Ответ 1
Длина трубы и выполнить тест против этого значения.
{% if narratives.narrative_text|length > 0 %}
{{ narratives.narrative_text }}
{% else %}
None
{% endif %}
Я не могу определить, пуста ли переменная при использовании в шаблоне.
Я повторил всю коллекцию, и в каждом я ищу переменную 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="#" onclick="location.href='https://udhc1-nodejstest.rhcloud.com/my_image/{{ narratives.file_id }}'; return false;">
<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 implicit false, который применяется для пустых строк, пустых массивов, пустых dicts, None
, False
, 0
и т.д.
Вы можете написать Пользовательский фильтр шаблонов, 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 %}
Он использует неявный True/False,None,
и т.д. python для выполнения задания.
Проще говоря, используйте переменные python внутри {{ }}
и условные обозначения и т.д. Внутри {% %}