2013-05-03 6 views
51

Wie verwenden Sie url_for in Flask, um eine Datei in einem Ordner zu referenzieren? Zum Beispiel habe ich einige statische Dateien im Ordner static, von denen einige in Unterordnern wie static/bootstrap sein können.Link zu Flask statische Dateien mit url_for

Wenn ich versuche, eine Datei von static/bootstrap zu liefern, erhalte ich einen Fehler.

<link rel=stylesheet type=text/css href="{{ url_for('static/bootstrap', filename='bootstrap.min.css') }}"> 

Ich kann Dateien verweisen, die nicht in Unterordnern mit diesem sind, was funktioniert.

<link rel=stylesheet type=text/css href="{{ url_for('static', filename='bootstrap.min.css') }}"> 

Was ist der richtige Weg, statische Dateien mit url_for zu verweisen? Wie verwende ich url_for um URLs zu statischen Dateien auf jeder Ebene zu generieren?

Antwort

105

Sie haben standardmäßig die static endpoint für statische Dateien. Auch Flask Anwendung hat die folgenden Argumente:

static_url_path: kann verwendet werden, um einen anderen Pfad für die statischen Dateien im Web anzugeben. Standardmäßig der Name des Ordners static_folder.

static_folder: Der Ordner mit statischen Dateien, die bei static_url_path serviert werden sollen. Der Standardwert ist der Ordner "static" im Stammverzeichnis der Anwendung.

Es bedeutet, dass das filename Argument einen relativen Pfad zur Datei in static_folder nehmen und es in einem relativen Pfad mit static_url_default kombiniert konvertieren:

url_for('static', filename='path/to/file') 

wird den Dateipfad von static_folder/path/to/file den URL-Pfad umwandeln static_url_default/path/to/file .

Also, wenn Sie Dateien aus dem static/bootstrap Ordner erhalten mögen verwenden Sie diesen Code:

<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='bootstrap/bootstrap.min.css') }}"> 

Welche konvertiert werden wird (Standardeinstellung):

<link rel="stylesheet" type="text/css" href="static/bootstrap/bootstrap.min.css"> 

Auch bei url_for documentation aussehen.