Как передать аргумент ключевого слова boolean вместе с использованием тега шаблона "Включить"

{% include "example.html" with name="John" hide_last_name=True %}

В принципе, я пытаюсь включить "example.html" в качестве подшаблона в свой основной шаблон. Дополнительный контекст предоставляется со значением для передачи аргументов ключевого слова name и hide_last_name. Хотя в системе шаблонов django нет проблем с распознаванием name, она как-то просто не может распознать hide_last_name. Я подозреваю, что использование аргумента ключевого слова boolean в теге Include теперь разрешено, но тогда я не могу найти нигде в официальных документах. Пожалуйста, помогите. Спасибо.

Ответ 1

Шаблон Django будет обрабатывать True как переменную и попытаться найти ее в контексте.
Вы можете использовать непустую строку для представления истинного значения или присвоить истинное значение True в контексте, например, через TEMPLATE_CONTEXT_PROCESSORS:

def common_vars(request):
    return {
        'True': True,
        'False': False,
        'newline': '\n',
        ...
    }

Ответ 2

Для Django <= 1.4.x

Как уже говорилось ранее, Django пытается найти переменную с именем "True". Самый простой способ справиться с этим - использовать целочисленное значение, которое не будет оцениваться.

Вы можете написать в шаблоне include

{% include "example.html" with show_last_name=1 %}

и в включенном шаблоне

John
{% if show_last_name %}
    Doe
{% endif %}

Для Django >= 1.5

Вы можете использовать True и False в шаблонах, так что это уже не проблема

Ответ 3

В django 1.5 вы можете использовать True в шаблонах django в соответствии с их примечаниями к выпуску.

И если вы работаете над более ранними версиями, вам нужно будет пойти на то, что предложил @okm!