Jinja: Wie wendet man "Format" auf eine Liste von Zeichenfolgen an?

Erstellt am 16. Feb. 2016  ·  4Kommentare  ·  Quelle: pallets/jinja

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 :-(

Hilfreichster Kommentar

@NormanDenayer ist in Ordnung, es sei denn, Sie möchten es in map() an einen anderen Filter übergeben.

Alle 4 Kommentare

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.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen