2016-01-12 3 views
0

Я использую включать тег в моих шаблонах, как это:Как шаблонный тег Джанго «включают» работа с None

{% include fragment_variable %} 

где fragment_variable является контекстом переменной, которая не может существовать. Интересно, если он взорвется, когда fragment_variable не находится в переменных контекста или None.

ПРИМЕЧАНИЕ: на самом деле я протестировал этот код в двух разных средах (как с использованием Django 1.7), так и получил два разных результата (один взорвался с некоторой трассировкой стека для поиска шаблонов, а другой просто сработал молча). Поэтому мне любопытно, есть ли параметр django, который контролирует поведение шаблона, когда тег «include» не может найти правильный шаблон.

+0

Из быстрого теста на Django 1.9 я получаю желтую страницу с ошибкой, когда 'debug = True', и молчащий сбой при' debug = False' (т. Е. Загрузка шаблона, и нет никаких признаков того, что тег include failed). – Alasdair

+0

извините, забыли упомянуть о версии. Я сейчас работаю над 1.7 – wei

ответ

1
{% if fragment_variable %} 
    {% include fragment_variable %} 
{% else %} 
    <!-- something else --> 
{% endif %} 

Edit:

Поскольку вы используете версию Джанго до 1.8, посмотрите на настройки TEMPLATE_STRING_IF_INVALID, он устанавливает значение по умолчанию для недопустимых переменных.

Также посмотрите на How invalid variables are handled:

Вообще, если переменная не существует, система шаблонов вставляет значение string_if_invalid опции конфигурации двигателя, , который устанавливается на «» (пустая строка).

Это поведение немного отличается для шаблонов if, for и reposition . Если недопустимая переменная предоставляется одному из этих тегов шаблона , переменная будет интерпретироваться как «Нет». Фильтры: всегда применяются к недопустимым переменным в этих тегах шаблонов.

В этом отношении я по-прежнему считаю использование if лучшим упражнением.

+0

Мне любопытно, как включить работу без проверки состояния. – wei

+0

Я отредактировал свой ответ. –

Смежные вопросы