Jinja: ¿Cómo aplicar "formato" en una lista de cadenas?

Creado en 16 feb. 2016  ·  4Comentarios  ·  Fuente: pallets/jinja

Trato de hacer algo como en Python

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

Lo intenté

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

y mucho más. Todo lo que intenté falló.

La documentación no es de ayuda :-(

Comentario más útil

@NormanDenayer está bien a menos que desee pasarlo a otro filtro en map ().

Todos 4 comentarios

¿por qué no {% for n in names %} {{ "db.%s.dump"|format(n) }} {% endfor %} ?

@NormanDenayer está bien a menos que desee pasarlo a otro filtro en map ().

Personalmente terminé escribiendo un plugin propio:

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 qué rechazo esto. También contiene un filtro que podría lograr esto, o puede escribir un filtro más específico como se muestra arriba.

¿Fue útil esta página
0 / 5 - 0 calificaciones