Я пытаюсь сделать что-то вроде Python
("db.%s.dump" % n for n in names)
Я пытался
{{ databases | map("format", "db.%s.dump") }}
{{ "db.%s.dump" | map("format", databases) }}
и многое другое. Все, что я пробовал, не удалось.
Документация не поможет :-(
почему бы не {% 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, чтобы узнать, почему я отказываюсь от этого. Он также содержит фильтр, который мог бы это сделать, или вы можете написать более конкретный фильтр, как показано выше.
Самый полезный комментарий
@NormanDenayer это нормально, если вы не хотите передать его другому фильтру в map ().