Подавлять вывод «Нет» как строку в Jinja2

Как убедить Jinja2 не печатать "None" когда значение None ?

У меня есть ряд записей в словаре, и я хотел бы выводить все в одном цикле вместо особых случаев для разных ключевых слов. Если у меня есть значение None ( NoneType не строка), тогда строка "None" вставляется в результаты рендеринга шаблона.

Пытаться подавить его с помощью {{ value or '' }} работает слишком хорошо, так как оно также заменит числовое значение.

Нужно ли фильтровать словарь, прежде чем передавать его в Jinja2 для рендеринга?

  • networkx - изменить размер узла на основе значения списка или словаря
  • Украшение метода
  • Запуск скрипта Python из PHP
  • .arff файлы с scikit-learn?
  • Как открыть новое окно или вкладку в webdriver (Python)?
  • Анализ бинарных файлов MIPS: существует ли библиотека Python для разбора двоичных данных?
  • Имя переменной в sqlite
  • Проверьте, если класс унаследован от другого
  • 5 Solutions collect form web for “Подавлять вывод «Нет» как строку в Jinja2”

    {{ value if value is not None }} отлично работает.

    если это вызывает ошибку в том, что вы не пытаетесь использовать другое.

    {{ value if value is not None else '' }}

    Другой вариант – использовать finalize в среде:

     >>> import jinja2 >>> e = jinja2.Environment() >>> e.from_string("{{ this }} / {{ that }}").render(this=0, that=None) u'0 / None' 

    но:

     >>> def my_finalize(thing): ... return thing if thing is not None else '' ... >>> e = jinja2.Environment(finalize=my_finalize) >>> e.from_string("{{ this }} / {{ that }}").render(this=0, that=None) u'0 / ' 

    Фильтр по умолчанию :

     {{ value|default("", True) }} 

    Пользовательский фильтр может решить проблему. Объявите это следующим образом:

     def filter_supress_none(val): if not val is None: return val else: return '' 

    Установите его следующим образом:

     templating_environment.filters['sn'] = filter_supress_none 

    Используйте его так:

     {{value|sn}} 

    Согласно этому сообщению из списка рассылки Pocco: https://groups.google.com/d/msg/pocoo-libs/SQ9ubo_Kamw/TadIdab9eN8J

    Армин Роначер (создатель Jinja2 / Flask и т. Д.) Рекомендует следующий «pythonic» фрагмент:

    {{ variable or 0 }} {{ variable or '' }}

    Понятие, заключающееся в том, что еще раз, явный предпочтительнее подразумевать.

    Изменить: выбранный ответ определенно правильный. Я действительно не сталкивался с ситуацией, когда переменная шаблона была бы либо строкой, либо числовым нулем, поэтому приведенные выше фрагменты могут помочь уменьшить уровень шума кода в шаблоне.

    Interesting Posts

    Использование свойства метода пользовательской модели Django в order_by ()

    Поток PyGtk не работает до тех пор, пока основные блокировки

    Любые библиотеки yaml в Python, которые поддерживают демпинг длинных строк в виде блочных литералов или сложенных блоков?

    Установить выделение жирным шрифтом выделенного текста с помощью тегов

    Как получить уникальные значения с соответствующим количеством совпадений из списка в Python?

    Как установить соотношение сторон в matplotlib?

    Преобразование pandas dataframe в массив numpy, сохранение индекса

    openssl_seal () в Python

    Лог-вычисления в Python

    индексирование массива numpy: индекс индекса и индекс np.array дают разные результаты

    преобразовать фрейм данных python в список

    PyAudio IOError: нет устройства ввода по умолчанию

    Python – Flask-SocketIO отправить сообщение из потока: не всегда работает

    Переупорядочение массива 4d numpy

    сопоставить цветную панель с матричным графом

    Python - лучший язык программирования в мире.