我尝试在 Python 中做类似的事情
("db.%s.dump" % n for n in names)
我试过
{{ databases | map("format", "db.%s.dump") }}
{{ "db.%s.dump" | map("format", databases) }}
还有很多。 我尝试的所有方法都失败了。
该文档没有帮助:-(
为什么不是{% 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 了解我为什么拒绝这个。 它还包含一个可以完成此操作的过滤器,或者您可以编写一个更具体的过滤器,如上所示。
最有用的评论
@NormanDenayer很好,除非您想将它传递给 map() 中的另一个过滤器。