Jinja: Comment appliquer "format" sur une liste de chaînes ?

Créé le 16 févr. 2016  ·  4Commentaires  ·  Source: pallets/jinja

J'essaie de faire quelque chose comme en Python

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

J'ai essayé

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

et beaucoup plus. Tout ce que j'ai essayé a échoué.

La documentation n'est d'aucune aide :-(

Commentaire le plus utile

@NormanDenayer c'est bien sauf si vous voulez le passer à un autre filtre dans map().

Tous les 4 commentaires

pourquoi pas {% for n in names %} {{ "db.%s.dump"|format(n) }} {% endfor %} ?

@NormanDenayer c'est bien sauf si vous voulez le passer à un autre filtre dans map().

Personnellement j'ai fini par écrire mon propre plugin :

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)

Usage:

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

Voir https://github.com/pallets/jinja/pull/906#issuecomment -548393215 pour savoir pourquoi je refuse cela. Il contient également un filtre qui pourrait accomplir cela, ou vous pouvez écrire un filtre plus spécifique comme indiqué ci-dessus.

Cette page vous a été utile?
0 / 5 - 0 notes