一尘不染

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

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'] }}')}}">

请说明如何做。我试图在flask网站页面上找到解决方案,但是目前我没有任何结果。


阅读 1384

收藏
2020-04-08

共1个答案

一尘不染

我不认为你可以嵌套这样的模板标签。但是你也不必这样做。

<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

2020-04-08