2013-10-22 20 views
2

我正在制作一个简单的音乐应用程序。 我想允许用户上传他们的音频文件,我有一个页面,我打算显示所有歌曲。 我创建了一个模板,该结构是这样的:Flask静态文件路由变量[url_for('static',filename ='')]

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

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

回答

9

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

<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

+0

我不认为,我明白你的答案,但它给了我一个主意。这里是我的代码:

+0

是的,正如我在我的答案中所说的,停止嵌套模板标签。相反,只需将它们运行到对方。 – aychedee

+0

谢谢,你真的帮了我 –

1

我认为你可以做

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

它适用于我:)