Язык шаблонов Django сознательно отличается от кода Python, так что людям не рекомендуется писать в него бизнес-логику.
Но логика шаблона достаточно сильна, чтобы выполнять поиск элементов на элементах, написав это в точечной записи. Например:
<s><code>{{ books[4][1] }}</code></s>
Должно быть написано как:
{{ books<b>.4.1</b> }}
Так что вы можете написать это как:
{% if 4 in books %}
{% if 1 in books<b>.4</b> %}
{{ books<b>.4.1</b> %}
{% endif %}
{% endif %}
Как говорится, все эти поиски не нужны вообще. Поскольку Django обычно не выдаст ошибку, если поиск не удастся. В этом случае он вернется к строке TEMPLATE_STRING_IF_INVALID
, когда потребуется распечатать ее. Который по умолчанию пуст, поэтому мы могли бы избежать неприятностей и написать:
{{ books.4.1 }}
, который в случае, если элемент не существует, напечатает settings.TEMPLATE_STRING_IF_INVALID
(если не указано, это пустая строка).
Если вы хотите выполнить проверку, вы можете использовать if
непосредственно для всей переменной, например:
{% <b>if books.4.1</b> %}
{{ books.4.1 %}
{% endif %}
, чтобы проверить, разрешены ли выражения «переменная шаблона», и результат имеет истинность True
.