Jinja: Как применить «формат» к списку строк?

Созданный на 16 февр. 2016  ·  4Комментарии  ·  Источник: pallets/jinja

Я пытаюсь сделать что-то вроде Python

("db.%s.dump" % n for n in names)

Я пытался

{{ databases | map("format", "db.%s.dump") }}
{{ "db.%s.dump" | map("format", databases) }}

и многое другое. Все, что я пробовал, не удалось.

Документация не поможет :-(

Самый полезный комментарий

@NormanDenayer это нормально, если вы не хотите передать его другому фильтру в map ().

Все 4 Комментарий

почему бы не {% for n in names %} {{ "db.%s.dump"|format(n) }} {% endfor %} ?

@NormanDenayer это нормально, если вы не хотите передать его другому фильтру в map ().

Лично я закончил написанием собственного плагина:

from jinja2.utils import soft_unicode

def format_string(text, fmt, *kw):
    return soft_unicode(fmt).format(text, *kw)

class FilterModule(object):
    def filters(self):
        return dict(format_string=format_string)

Использование:

list_of_names | map('format_string', 'hello {}!')

См. Https://github.com/pallets/jinja/pull/906#issuecomment -548393215, чтобы узнать, почему я отказываюсь от этого. Он также содержит фильтр, который мог бы это сделать, или вы можете написать более конкретный фильтр, как показано выше.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги