Фильтр по умолчанию для шаблона Django с логическими значениями - PullRequest
0 голосов
/ 28 ноября 2018

Мне нужно передать логическую переменную в шаблон.Чтобы преобразовать его в js boolean, вы обычно делаете:

{{ boolval|yesno:'true,false' }}

Теперь мой boolvar может не существовать.В этом случае мне нужно по умолчанию true, поэтому я пытаюсь это:

{{ boolval|default_if_none:'true'|yesno:'true,false' }}

Неожиданно, результатом этого является false.

Я пытаюсь отладитьчто {{ boolval|default_if_none:'true' }} производит, но я получаю синтаксические ошибки.Не уверен, что происходит, но он определенно не производит true.

Как мне добиться с фильтрами поведения, за которым я следую?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

default_is_none использовать данное значение только в том случае, если оно равно None.Если boolval отсутствует в контексте шаблона, то по умолчанию он будет выглядеть как пустая строка, которая отличается от None.

Если вы не можете убедиться, что присутствует boolvalв контексте шаблона я предлагаю вам написать простой тег с takes_context=True.Я не верю, что можно написать фильтр, который может определить разницу между отсутствующей переменной и пустой строкой.

0 голосов
/ 28 ноября 2018

Более простым и понятным решением, на мой взгляд, является {{ boolval|lower }}.

Никаких дополнительных накладных расходов и отлично работает.

...