url_for中的flask jinja宏变量

app*_*ief 3 python jinja2 flask

我有一个烧瓶应用程序与jinja宏看起来像那样

{% macro icon(site, title="") %}
    <img src="{{ url_for('static', filename="icons/XXX.png") }}" alt="{{ title }}" class="img-icon">
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)

我需要做的是让文件名等于site传递给宏的变量.因此,它应该具有值,而不是XXX site.

有没有办法做到这一点?

Oin*_*Oin 9

这应该工作:

{% macro icon(site, title="") %}
    <img src="{{ url_for('static', filename='icons/%s.png' % site) }}" alt="{{ title }}" class="img-icon">
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)

  • 不确定jinja和flask,但是[推荐](http://www.python.org/dev/peps/pep-3101/)使用`'icons/{}.png'.format(site)`而不是python中的''icons /%s.png'%site` :) (4认同)

Apr*_*ion 5

自2.6(pep-3101)以来,建议使用python中的字符串格式格式化方法str.format()

{% macro icon(site, title="") %}
    <img src="{{ url_for('static', filename='icons/{0}.png'.format(site)) }}" alt="{{ title }}" class="img-icon">
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)