Jinja: Como aplicar o "formato" em uma lista de strings?

Criado em 16 fev. 2016  ·  4Comentários  ·  Fonte: pallets/jinja

Eu tento fazer algo como em Python

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

eu tentei

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

e muito mais. Tudo o que tentei falhou.

A documentação não ajuda em nada :-(

Comentários muito úteis

@NormanDenayer está bem, a menos que você queira passá-lo para outro filtro em map ().

Todos 4 comentários

por que não {% for n in names %} {{ "db.%s.dump"|format(n) }} {% endfor %} ?

@NormanDenayer está bem, a menos que você queira passá-lo para outro filtro em map ().

Pessoalmente, terminei escrevendo o próprio 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)

Uso:

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

Consulte https://github.com/pallets/jinja/pull/906#issuecomment -548393215 para saber por que estou recusando isso. Ele também contém um filtro que pode fazer isso, ou você pode escrever um filtro mais específico, conforme mostrado acima.

Esta página foi útil?
0 / 5 - 0 avaliações