Ich versuche, so etwas wie in Python zu tun
("db.%s.dump" % n for n in names)
Ich habe es versucht
{{ databases | map("format", "db.%s.dump") }}
{{ "db.%s.dump" | map("format", databases) }}
und vieles mehr. Alles, was ich versucht habe, ist fehlgeschlagen.
Die Dokumentation hilft nicht :-(
warum nicht {% for n in names %} {{ "db.%s.dump"|format(n) }} {% endfor %}
?
@NormanDenayer ist in Ordnung, es sei denn, Sie möchten es in map() an einen anderen Filter übergeben.
Persönlich endete ich damit, ein eigenes Plugin zu schreiben:
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)
Verwendungszweck:
list_of_names | map('format_string', 'hello {}!')
Siehe https://github.com/pallets/jinja/pull/906#issuecomment -548393215, warum ich dies ablehne. Es enthält auch einen Filter, der dies erreichen könnte, oder Sie können einen spezifischeren Filter schreiben, wie oben gezeigt.
Hilfreichster Kommentar
@NormanDenayer ist in Ordnung, es sei denn, Sie möchten es in map() an einen anderen Filter übergeben.