Flask静态文件路由中的变量[url_for('static',filename ='')]

时间:2013-10-22 07:02:33

标签: python flask

我正在制作一个简单的音乐应用。 我想允许用户上传他们的音频文件,我有一个页面,我打算显示所有歌曲。 我已经创建了一个模板,结构如下:

{% for song in songs %}
    <div class="chart-item">
        <div class="chart-position col-md-1">
            <h3>#u</h3>
        </div> <!-- chart-position -->
        <div class="band-logo col-md-2">
            <img src="{{ url_for('static', filename='uploads/users/{{ song['artistName'] }}/{{ song['pathToCover'] }}')}}">
        </div> <!-- band-logo -->
        <div class="band-name-and-autio col-md-9">
            <div class="band-name">{{ song['artistName'] }} - {{ song['songName'] }}</div> <!-- band-name -->
            <div class="audio">
                <audio>

                </audio>
            </div> <!-- audio -->
        </div> <!-- band-name-and-autio -->
        <div class="clearfix"></div>
    </div> <!-- chart-item -->
{% endfor %}

这里我想创建一个动态路径来覆盖图像和记录,但我不知道在这里正确写入文件的路径:

<img src="{{ url_for('static', filename='uploads/users/{{ song['artistName'] }}/{{ song['pathToCover'] }}')}}">

请解释如何做到这一点。我试图在烧瓶网页上找到解决方案,但是现在我没有任何结果。

2 个答案:

答案 0 :(得分:10)

我不相信你可以像这样嵌套模板标签。但你也不应该这样做。

<img src="{{ url_for('static', filename='uploads/users/') }}{{ song['artistName'] }}/{{ song['pathToCover'] }}">

您可以通过以下示例了解其原因:

>>> from flask import Flask, url_for
>>> app = Flask(__name__)
>>> with app.test_request_context():
...    print url_for('static', filename='uploads/users/')
/static/uploads/users/

那么您只需要添加artistName/pathToCover

答案 1 :(得分:5)

我认为你可以做到

<img src="{{ url_for('static', filename='uploads/users/'+ song['artistName']+'/'+ song['pathToCover'])}}">

它对我有用:)