Используется ли default_if_none в шаблонах Django? - PullRequest
8 голосов
/ 12 мая 2011

Из документов Django,

Как правило, если переменная не существует, система шаблонов вставляет значение параметра TEMPLATE_STRING_IF_INVALID, которое устанавливается в '' (пустая строка) с помощьюпо умолчанию.

Фильтры, которые применяются к недопустимой переменной, будут применяться, только если для TEMPLATE_STRING_IF_INVALID установлено значение '' (пустая строка).Если для TEMPLATE_STRING_IF_INVALID задано любое другое значение, фильтры переменных будут игнорироваться.

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

Если недопустимая переменная всегда переводится в '', для тегов шаблона и фильтров, отличных от , если , для и перегруппировать , тогда что хорошего в шаблонном фильтре default_if_none ?Устаревшие

Ответы [ 2 ]

13 голосов
/ 12 мая 2011

Существует разница между недопустимой переменной и переменной, которая существует, но имеет значение None.

Рассмотрим следующий контекст:

{'apple':'green','banana':None}`

В вашем шаблоне {{ apple }} разрешается до green, а {{ banana }} разрешается до None, а {{ orange }} разрешается до TEMPLATE_STRING_IF_INVALID.

Теперь рассмотрим {{ banana|default_if_none:'yellow' }}, и вы должны увидеть использование тега default_if_none.

4 голосов
/ 12 мая 2011

Вот случай, когда я использовал default_if_none несколько раз.Я запрашиваю вторичную базу данных, в которой у меня нет контроля, и я отображаю данные в шаблоне.В большинстве случаев данные выглядят нормально, но иногда значение данных будет показывать None.В этом случае я буду использовать фильтр как:

{{ data_value|default_if_none:"N/A" }}

Обычная публика и пользователи сайта обычно не понимают, что означает значение None, заменив его более дружественным словом,Фильтр default_if_none пригодится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...