2013-07-20 5 views
11

I Ordner festgelegt für statische Dateien wie dieseBild kann nicht von STATIC_FOLDER in Flask Vorlage zeigen

app.config['STATIC_FOLDER'] = 'tmp' 

In Vorlage verwenden img-Tag i in/tmp gespeichert, ein Bild zu zeigen:

<img src='IKE2low.jpg' width="200" height="85"> 

In Firebug Ich sehe 404 Fehler anstelle von Bild. Bitte sag mir, was habe ich falsch gemacht?

Vielen Dank im Voraus.

+0

Ein kleines Update: jetzt habe ich versucht, diese Datei neben meine Hauptpy-Datei und auch in den Vorlagenordner zu stellen - immer noch wird kein Bild vom img-Tag gesehen. Ich frage mich - wo sucht es nach Bildern ??? – Nervosa

Antwort

20

Ich bin mir nicht sicher, was ist das STATIC_FOLDER Konfigurationselement, das Sie verwenden. Wo hast du es gefunden?

Es gibt zwei Argumente an den Flask Klasse Konstruktor, der die Konfiguration von statischen Dateien regeln:

  • static_folder: standardmäßig auf „statisch“. Dies ist das Präfix, das Sie in URLs verwenden müssen, um auf die statischen Dateien zuzugreifen.

  • static_url_path: Dies ist der Speicherort des statischen Ordners. Standardmäßig entspricht dieser Wert der Einstellung für den statischen Ordner.

Zum Beispiel, wenn Sie diese Konfiguration:

from flask import Flask 
app = Flask(__name__, static_url_path = "/tmp", static_folder = "tmp") 

Dann können Sie Ihre Bilder zugreifen, wie folgt:

<img src='/tmp/IKE2low.jpg' width="200" height="85"> 

Sie können auch die Notwendigkeit entfernen, um einen Präfix hat in die URLs wie folgt:

from flask import Flask 
app = Flask(__name__, static_url_path = "", static_folder = "tmp") 

Und dann können Sie Zugriff auf Ihre Bilder als:

<img src='/IKE2low.jpg' width="200" height="85"> 

Beachten Sie, dass Sie immer noch eine Wurzel / haben müssen.

Aber der beste Weg, dies zu tun ist, nicht Bildpfade explizit verweisen und stattdessen url_for verwenden, um die richtigen URLs zu generieren. Wenn Sie Jinja2 Vorlagen verwenden, das wäre:

<img src="{{ url_for('static', filename = 'IKE2low.jpg') }}" width="200" height="85"> 

Dieser letzte Ausdruck funktionieren würde, unabhängig davon, wo und wie die statischen Dateien konfiguriert sind.

+0

Vielen Dank! Ihre Antwort hat mir sehr geholfen! – Nervosa

+0

Miguel, hast du vielleicht deine Definitionen für static_folder, static_url_path durchkreuzt? Ich stelle fest, dass Sie später static_url_path verwenden, um auf den Text zu verweisen, der einer Ressourcen-URL vorangestellt ist. – apublius

Verwandte Themen