Jinja: 如何在字符串列表上应用“格式”?

创建于 2016-02-16  ·  4评论  ·  资料来源: pallets/jinja

我尝试在 Python 中做类似的事情

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

我试过

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

还有很多。 我尝试的所有方法都失败了。

该文档没有帮助:-(

最有用的评论

@NormanDenayer很好,除非您想将它传递给 map() 中的另一个过滤器。

所有4条评论

为什么不是{% for n in names %} {{ "db.%s.dump"|format(n) }} {% endfor %}

@NormanDenayer很好,除非您想将它传递给 map() 中的另一个过滤器。

我个人以编写自己的插件结束:

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)

用法:

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

请参阅https://github.com/pallets/jinja/pull/906#issuecomment -548393215 了解我为什么拒绝这个。 它还包含一个可以完成此操作的过滤器,或者您可以编写一个更具体的过滤器,如上所示。

此页面是否有帮助?
0 / 5 - 0 等级