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

它適用於我:)