2013-06-20 35 views
8

新手問題。Python燒瓶忍者鏡像文件未找到

我正在使用Flask,一個Python框架。 Flask使用Jinja來渲染模板。 我不知道Jinja Flask使用哪個版本,也不知道如何檢索Jinja版本或Flask版本。我使用Python版本2.7。

該模板在css/image目錄中包含圖像。直接在Firefox瀏覽器中將模板視爲文件時,該圖像可見。

但不執行瓶時:

from flask import Flask, render_template 
app = Flask(__name__) 

@app.route('/hello/') 
@app.route('/hello/<name>') 
def hello(name=None): 
    return render_template('Basic.html', name=name) 

if __name__ == '__main__': 
    app.debug = True 
    app.run() 

HTML文件的內容:

<!DOCTYPE HTML> 
<html> 
    <body> 

     <!-- variable example begin --> 
     {% if name %} 
     <h1>Hello {{ name }}!</h1> 
     {% else %} 
     <h1>Hello World!</h1> 
     {% endif %} 

     <!-- variable example end --> 

    <img src="css/images/icons/resultset_previous.png" width="16" height="16" alt="previous" title="Previous" border="0"> 

    </body> 
</html> 

模板運行良好和可變例如運行正常。但圖像不顯示。 調試返回: 「GET /hello/css/images/icons/resultset_previous.png HTTP/1.1」404 -

我按照文檔中的建議在VirtualEnv中運行Flask。 圖像的路徑似乎未知。我如何設置路徑?

+0

你有沒有設置的路徑所推薦的教程? – debianplebian

+0

如果你使用的是virtualenv,你可以通過從命令行執行'pip freeze'來查看你使用的是哪個版本的jinja和flask。 – richsilv

回答

7

請參閱Flask文檔的this section

從您的模板是指靜態文件的正確方法是:

<img src="{{ url_for('static', filename = 'css/images/icons/resultset_previous.png') }}" width="16" height="16" alt="previous" title="Previous" border="0"> 
+0

這是一個救生員,非常感謝 –

18

對於瓶,你應該保持靜態文件通常是一個文件夾下的「靜態」,然後使用url_for功能。比方說你的項目被稱爲「MyProject的」,用你的榜樣,它應該是這個樣子:

myproject/ 
    app.py 
    templates/ 
    static/ 
     css/ 
      images/ 
       icons/ 
        resultset_previous.png 

然後在模板中,你可以調用

<img src= {{ url_for('static', filename = 'css/images/icons/resultset_previous.png') }} width="16" height="16" alt="previous" title="Previous" border="0"> 

此外,解答有關神社問題版本等,檢查了這一點

https://github.com/mitsuhiko/flask/blob/master/.travis-lowest-requirements.txt

+1

非常感謝。這是kob – Bernard

+0

如果有效,請接受其他人看到的答案。 – codegeek

+0

非常感謝。這有幫助! –