Flask: Statische Dateien in Unterverzeichnissen

8

In meiner Flaschenvorlagendatei füge ich eine CSS-Datei ein (ich habe den Textbaustein weggelassen):

url_for('static', filename='css/bootstrap.css')

Dies ergibt /static/css/bootstrap.css , was bedeutet, dass es (wegen des führenden Schrägstrichs) als domain.com/static/css/boostrap.css interpretiert wird. Leider befindet sich der eigentliche static Ordner in einem Unterverzeichnis: domain.com/projects/test/static/

Umgebungsspezifische Informationen:

Meine fcgi-Datei, die sich im Ordner ~/fcgi-bin befindet (hostspezifisch, denke ich):

%Vor%

und mein .htaccess in domain.com/projects/test /

%Vor%

Zusammenfassend möchte ich url_for('static', filename='css/bootstrap.css') static/css/bootstrap.css anstelle von /static/css/bootstrap.css

zurückgeben

BEARBEITEN # 1

Ich habe bemerkt, dass dies auch bei normalen URLs geschieht, nicht bei statischen Dateien wie URL-FOR ('about').

BEARBEITEN # 2

Ich habe eine Quickstart-App geschrieben und ein Blogbeitrag dazu.

    
Jonas Gröger 23.02.2013, 18:34
quelle

1 Antwort

5

Setzen Sie den Skriptnamen nicht auf eine leere Zeichenfolge, versuchen Sie, ihn auf "/ projects / test" zu setzen. Wenn SCRIPT_NAME auf eine leere Zeichenfolge gesetzt wird, geht die Anwendung davon aus, dass sie im Stammverzeichnis der Domäne ausgeführt wird. Die von url_for generierten Routen werden dann dort beginnen. Mit dem Skriptnamen '/ projects / test' gibt url_for('static', filename='/foo/bar.css') '/projects/test/static/foo/bar.css'

zurück

Wenn Sie wirklich möchten, dass Ihre statischen Apps auf einem anderen Endpunkt bereitgestellt werden, müssen Sie sie nur selbst ausführen, etwa so:

%Vor%     
DazWorrall 24.02.2013, 19:57
quelle

Tags und Links