Jinja: Bagaimana cara menerapkan "format" pada daftar string?

Dibuat pada 16 Feb 2016  ·  4Komentar  ·  Sumber: pallets/jinja

Saya mencoba melakukan sesuatu seperti di Python

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

Saya mencoba

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

dan banyak lagi. Semua yang saya coba gagal.

Dokumentasi tidak membantu :-(

Komentar yang paling membantu

@NormanDenayer tidak apa-apa kecuali jika Anda ingin meneruskannya ke filter lain di map().

Semua 4 komentar

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

@NormanDenayer tidak apa-apa kecuali jika Anda ingin meneruskannya ke filter lain di map().

Secara pribadi saya mengakhiri dengan menulis plugin sendiri:

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)

Penggunaan:

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

Lihat https://github.com/pallets/jinja/pull/906#issuecomment -548393215 untuk mengetahui alasan saya menolak ini. Ini juga berisi filter yang dapat melakukannya, atau Anda dapat menulis filter yang lebih spesifik seperti yang ditunjukkan di atas.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat