Как сделать переменную в jijna2 по умолчанию " и" Если объекта нет, вместо того, чтобы делать что-то вроде этого?
{% if p %}
{{ p.User['first_name']}}
{% else %}
NONE
{%endif %}
Так что если объект P Нет, я хочу по умолчанию значений п (first_name и last_name), чтобы " то". В основном НВЛ(стр. Пользователю[имя'] " Ну и")
Получать ошибку: Ошибка: jinja2.исключения.UndefinedError UndefinedError: 'Нет' не имеет атрибута 'пользователей'
Используйте " нет " функция встроенный (http://jinja.pocoo.org/docs/templates/#none):
{% if p is not none %}
{{ p.User['first_name'] }}
{% else %}
NONE
{%endif %}
или
{{ p.User['first_name'] if p != None else 'NONE' }}
или если вам нужна пустая строка:
{{ p.User['first_name'] if p != None }}
По данным документы Вы можете просто сделать:
{{ p|default('', true) }}
Причиной нет
муляжи false
в логическом контексте.
Обновление: как Линдес упомянул, это работает только для простых типов данных.
Как дополнение к другим ответы, можно написать что-нибудь другое, если переменной нет подобного этому:
{{ variable or '' }}
После этого документа вы можете сделать это таким образом:
{{ p.User['first_name']|default('NONE') }}
Чтобы не бросать исключение, а на "Р" или "стр. Пользователей" это ничего, вы можете использовать:
{{ (p and p.User and p.User['first_name']) or "default_value" }}
Как еще одно решение (вид похож на некоторые предыдущие):
{{ ( P, определяется и P.Пользователя определяется и P.Пользователь['имя'] ) |по умолчанию (то"не то", Истина) }}
Обратите внимание на последнюю переменную (стр. Пользователь['имя']) Нет, если тест определил после него.
Я обычно определяю для себя функции НВЛи положите в
глобальныеи
фильтры`.
def nvl(*args):
for item in args:
if item is not None:
return item
return None
app.jinja_env.globals['nvl'] = nvl
app.jinja_env.filters['nvl'] = nvl
Использование в шаблоне:
<span>Welcome {{ nvl(person.nick, person.name, 'Anonymous') }}<span>
// or
<span>Welcome {{ person.nick | nvl(person.name, 'Anonymous') }}<span>
Как из Анзибль 2.8, вы можете просто использовать:
{{ стр. Пользователь['имя'] }}
См https://docs.ansible.com/ansible/latest/porting_guides/porting_guide_2.8.html#jinja-undefined-values