2013-06-20 10 views
8

Pytanie Newbie.Python flask jinja plik obrazu nie znaleziono

Używam Flask, webframe dla Python. Flask wykorzystuje Jinja do renderowania szablonu. Nie wiem, która wersja Jinja Flask używa, ani nie wiem, jak odzyskać wersję Jinja lub wersję Flask. Używam wersji 2.7 Pythona.

Szablon zawiera obraz w katalogu css/image. Ten obraz jest widoczny podczas przeglądania szablonu jako plik bezpośrednio w przeglądarce Firefox.

Ale nie podczas wykonywania Flask:

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() 

Zawartość pliku 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> 

Bieg szablon porządku i zmienna przykład działa zgodnie z oczekiwaniami. Ale obrazy nie są wyświetlane. Debug powraca: "GET /hello/css/images/icons/resultset_previous.png HTTP/1.1" 404 -

biegnę kolby virtualenv jak zasugerowano w dokumentacji. Ścieżka do obrazu wydaje się być nieznana. Jak mogę ustawić ścieżkę?

+0

Czy skonfigurować ścieżki zgodnie z zaleceniami poradnika? – debianplebian

+0

jeśli używasz virtualenv, możesz zobaczyć, której wersji jinja i flask używasz, wykonując 'pip freeze' z wiersza poleceń. – richsilv

Odpowiedz

7

Zobacz dokumentację kolby w języku angielskim: this section.

Prawidłowy sposób odnieść się do pliku statycznego z szablonu jest:

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

to jest ratownik, bardzo dziękuję –

18

Na Kolby należy przechowywać pliki statyczne zwykle pod folderze „statyczne”, a następnie użyj funkcji url_for. Powiedzmy, że Twój projekt nazywa się „myproject” i za pomocą przykładu, powinno to wyglądać mniej więcej tak:

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

Następnie w szablonie, można zadzwonić

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

Ponadto, aby odpowiedzieć na pytanie o Jinja wersje itp, to sprawdzić

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

+1

Dziękuję bardzo. To robi kob – Bernard

+0

Jeśli to działa, proszę przyjąć odpowiedź, aby inni mogli ją zobaczyć. – codegeek

+0

Wielkie dzięki. To pomogło! –