it-swarm.com.de

Verknüpfung zu statischen Dateien der Flasche mit URL_for

Wie verwende ich url_for in Flask, um auf eine Datei in einem Ordner zu verweisen? Ich habe beispielsweise einige statische Dateien im Ordner static, von denen sich einige in Unterordnern wie static/bootstrap befinden können.

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

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

Ich kann auf Dateien verweisen, die sich nicht in Unterordnern befinden, was funktioniert.

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

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

69
user1431282

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

static_url_path: kann verwendet werden, um einen anderen Pfad für die statischen Dateien im Web anzugeben. Der Standardwert ist der Name des static_folder-Ordners.

static_folder: Der Ordner mit statischen Dateien, die unter static_url_path bereitgestellt werden sollen. Der Standardwert ist der 'statische' Ordner im Stammpfad der Anwendung.

Das bedeutet, dass das Argument filename einen relativen Pfad zu Ihrer Datei in static_folder verwendet und in einen relativen Pfad konvertiert, der mit static_url_default kombiniert ist:

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

konvertiert den Dateipfad von static_folder/path/to/file in den URL-Pfad static_url_default/path/to/file.

Wenn Sie also Dateien aus dem Ordner static/bootstrap abrufen möchten, verwenden Sie diesen Code:

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

Welches wird in (mit Standardeinstellungen) konvertiert:

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

Siehe auch url_for Dokumentation .

134
tbicr

In meinem Fall hatte ich eine spezielle Anweisung in die Nginx-Konfigurationsdatei:

location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|Zip|rar)$ {
            try_files $uri =404;
    }

Alle Kunden haben '404' erhalten, weil nginx nichts über Flask bekannt ist.

Ich hoffe es hilft jemandem.

0
Andrew Grow