2016-02-12 64 views
-1

我正在嘗試製作一個TicTacToe網絡應用程序,其AI作爲播放器2進行播放。爲此,我在python中編寫了遊戲和AI代碼,編寫了html/javascript前端,並使用了燒錄服務器。在HTML我的img標籤和資產等(這些被嵌入在傳統方式的HTML文件):如何在使用Flask後端時使用HTML和圖片資源?

<img id="pic" src="assets/images/hil.jpg" class="X"> 
 
or 
 
<audio src="assets/audio/smw_coin.wav" id="marioStart" preload="auto"></audio>

不過,我得到這種形式的錯誤。

127.0.0.1 - - [11 /二月/ 2016 23點52分22秒] 「GET /assets/audio/smb_pipe.wav HTTP/1.1」 404 -

127.0.0.1 - - [11 /二月/ 2016 23:52:22]「GET /assets/js/jquery-1.11.3.js HTTP/1.1」404 -

燒瓶似乎將此解釋爲域名而不是檢查資產文件夾。有誰知道如何讓Flask將src請求解釋爲燒瓶模板文件夾中的目錄?

PS。這也是一個問題,因爲它阻止我在我的html文件中包含JQuery。

+0

[Flask在我的包的'static'目錄中找不到文件的可能的重複](http://stackoverflow.com/questions/35593283/flask-not-finding-files-in-my-packages-static-directory) B/c鏈接的問題更普遍地問,這個問題應該刪除。 – franklin

回答

0

你想使用url_for

<img src="{{ url_for('static', filename='images/hil.jpg') }}"> 

默認情況下,你會看起來像被從static文件夾中擔任了/static/images/hil.jpg一個URL結束。如果你想保留你的URL,你必須告訴Flask爲靜態資產使用不同的URL路徑。

app = Flask(__name__, static_url_path='/assets') 

這會給你看起來像/assets/images/hil.jpg' that is served up from your static`文件夾中的網址。如果您已命名文件夾資產並且不想重命名它,則可以讓Flask在不同的文件夾中查找靜態資產。

app = Flask(__name__, static_folder='assets') 

這會給你看起來像被從assets文件夾中擔任了/assets/images/hil.jpg的URL。在這種情況下,您不需要指定兩個參數,因爲static_url_path默認情況下使用static_folder

+0

工作就像一個魅力!非常感謝。 – Nali