2013-06-20 2 views
8

Вопрос для новичков.Python flask jinja файл изображения не найден

Я использую Flask, webframe для Python. Flask использует Jinja для визуализации шаблона. Я не знаю, какая версия Jinja Flask использует, и я не знаю, как получить версию Jinja или версию Flask. Я использую Python версии 2.7.

Шаблон содержит изображение в каталоге css/images. Это изображение отображается при просмотре шаблона в виде файла непосредственно в браузере 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> 

Шаблон запуска тонкой и переменной пример работает, как ожидалось. Но изображения не отображаются. Debug возвращает: "GET /hello/css/images/icons/resultset_previous.png HTTP/1.1" 404 -

Я бегу колба в VirtualEnv, как предложено в документации. Путь к изображению кажется неизвестным. Как я могу установить путь?

+0

ли вы устанавливать пути в соответствии с рекомендациями руководства? – debianplebian

+0

, если вы используете virtualenv, вы можете увидеть, какую версию jinja и флэка вы используете, выполнив 'pip freeze' из командной строки. – richsilv

ответ

7

См. 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

Большое спасибо. Это помогло! –