[PYTHON] Ändern Sie das statische Dateispeicherverzeichnis und die URL in Flask

1. Zuallererst

Dieses Mal werde ich den URL-Pfad für den Zugriff auf statische Dateien mit flask und das Ändern des Speicherverzeichnisses erläutern. Außerdem benötigt die REST-API normalerweise keine statischen Dateien. Daher möchte ich erklären, wie diese deaktiviert werden.

1.1. Überprüfungsumgebung

2. Ändern Sie das Speicherverzeichnis mit "static_folder"

Das Verzeichnis, in dem statische Dateien in der Flasche gespeichert sind, kann mit "static_folder" geändert werden. Die Standardeinstellung ist das Verzeichnis "statisch".

2.1. Quellcode

dir_change_app.py


# -*- coding: utf-8 -*-
import os
from flask import Flask

# flask
# app = Flask(__name__)
#Wird durch den relativen Pfad angegeben
app = Flask(__name__, static_folder='resources')
#Geben Sie mit einem absoluten Pfad an (Verzeichnis ist/)
# app = Flask(__name__, static_folder='C:/tmp/www')
#Geben Sie mit einem absoluten Pfad an (Verzeichnis ist\\)
# app = Flask(__name__, static_folder='C:\\tmp\\www')

# main
if __name__ == "__main__":
    #Informationen zur Flaschenzuordnung anzeigen
    print app.url_map
    app.run(host=os.getenv("APP_ADDRESS", 'localhost'), \
    port=os.getenv("APP_PORT", 3000))

** Sie können die aktuellen Zuordnungsinformationen mit url_map des Kolbens überprüfen. ** **.

2.2 Funktionsprüfung

Standardmäßig nicht angegeben belassen


C:\demo>python dir_change_app.py
Map([<Rule '/static/<filename>' (HEAD, OPTIONS, GET) -> static>])
 * Running on http://localhost:3000/ (Press CTRL+C to quit)
127.0.0.1 - - [19/Aug/2017 14:17:28] "GET /static/memo.txt HTTP/1.1" 200 -

Standardmäßig wird davon ausgegangen, dass das aktuelle Verzeichnis ein statisches Verzeichnis hat. Wenn Sie also nach dem Erstellen eines statischen Verzeichnisses und dem Speichern von memo.txt mit einem Webbrowser auf http: // localhost: 3000 / static / memo.txt zugreifen, wird memo.txt angezeigt. Ich werde.

Wird durch den relativen Pfad angegeben


C:\demo>python dir_change_app.py
Map([<Rule '/resources/<filename>' (HEAD, OPTIONS, GET) -> static>])
 * Running on http://localhost:3000/ (Press CTRL+C to quit)
127.0.0.1 - - [19/Aug/2017 14:03:36] "GET /resources/demo.js HTTP/1.1" 200 -

Wenn Sie das Verzeichnis "resources" mit einem relativen Pfad angeben, wird über einen Webbrowser auf "http: // localhost: 3000 / resources / demo.js" zugegriffen.

Angegeben durch absoluten Pfad


C:\demo>python dir_change_app.py
Map([<Rule '/www/<filename>' (HEAD, OPTIONS, GET) -> static>])
 * Running on http://localhost:3000/ (Press CTRL+C to quit)
127.0.0.1 - - [19/Aug/2017 14:04:57] "GET /www/demo.js HTTP/1.1" 200 -

Sie können auch einen absoluten Pfad angeben. Verwenden Sie unter Windows / oder \\, um Verzeichnisse zu trennen. Bei einem absoluten Pfad ist der Verzeichnisname am Ende des Pfads der Pfadname der URL. Wenn die Demo "static_folder =" C: / tmp / www "ist, ist sie" / www ". Wie Sie die URL ändern, wird später erläutert.

3. Ändern Sie die URL für den Zugriff mit static_url_path

Die URL für den Zugriff auf statische Dateien mit flask kann mit static_url_path geändert werden. Die Standardeinstellung entspricht dem in static_folder angegebenen Verzeichnisnamen.

3.1. Quellcode

url_change_app.py


# -*- coding: utf-8 -*-
import os
from flask import Flask

# flask
app = Flask(__name__)
#Geben Sie den URL-Pfad an
app = Flask(__name__, static_url_path='/js')
#Verwenden Sie mehrere Trennzeichen für URL-Pfade
# app = Flask(__name__, static_url_path='/h/o/g/e')
#Wenn Sie im URL-Pfad nichts angeben möchten, geben Sie ein leeres Zeichen an
# app = Flask(__name__, static_url_path='')

# main
if __name__ == "__main__":
    #Informationen zur Flaschenzuordnung anzeigen
    print app.url_map
    app.run(host=os.getenv("APP_ADDRESS", 'localhost'), \
    port=os.getenv("APP_PORT", 3000))

Da das Speicherverzeichnis hier nicht in "static_folder" angegeben ist, wird die statische Datei standardmäßig im "static" -Verzeichnis des aktuellen Verzeichnisses gespeichert.

** Bitte beachten Sie, dass der durch static_url_path angegebene Wert immer mit / beginnen muss. ** **.

3.2 Funktionsprüfung

Geben Sie den URL-Pfad normal an


C:\demo>python url_change_app.py
Map([<Rule '/js/<filename>' (HEAD, OPTIONS, GET) -> static>])
 * Running on http://localhost:3000/ (Press CTRL+C to quit)
127.0.0.1 - - [19/Aug/2017 14:57:08] "GET /js/demo.js HTTP/1.1" 200 -

Das Speicherverzeichnis ist "statisch", aber Sie können mit "/ js / demo.js" darauf zugreifen.

Geben Sie im URL-Pfad mehrere Trennzeichen an


C:\demo>python url_change_app.py
Map([<Rule '/h/o/g/e/<filename>' (HEAD, OPTIONS, GET) -> static>])
 * Running on http://localhost:3000/ (Press CTRL+C to quit)
127.0.0.1 - - [19/Aug/2017 14:57:51] "GET /h/o/g/e/demo.js HTTP/1.1" 200 -

Da dies der Pfad ist, der beim Zugriff über die URL verwendet wird, können Sie problemlos auf "demo.js" zugreifen, selbst wenn Sie mehrere Trennzeichen angeben.

Wenn Sie im Pfad nichts angeben


C:\demo>python url_change_app.py
Map([<Rule '/<filename>' (HEAD, OPTIONS, GET) -> static>])
 * Running on http://localhost:3000/ (Press CTRL+C to quit)
127.0.0.1 - - [19/Aug/2017 14:58:39] "GET /demo.js HTTP/1.1" 200 -

Sie können darauf zugreifen, indem Sie einfach den Dateinamen im Speicherverzeichnis angeben, ohne einen unnötigen Pfad wie "/ demo.js" anzugeben.

4. Setzen Sie static_folder = None zum Deaktivieren

4.1. Quellcode

no_static_app.py


# -*- coding: utf-8 -*-
import os
from flask import Flask

# flask
#Statische Dateifunktion deaktiviert
app = Flask(__name__, static_folder=None)

# main
if __name__ == "__main__":
    #Informationen zur Flaschenzuordnung anzeigen
    print app.url_map
    app.run(host=os.getenv("APP_ADDRESS", 'localhost'), \
    port=os.getenv("APP_PORT", 3000))

4.2 Funktionsprüfung

Statische Dateifunktion deaktiviert


C:\demo>python no_static_app.py
Map([])
 * Running on http://localhost:3000/ (Press CTRL+C to quit)

** Wenn Sie sich die Zuordnungsinformationen ansehen, sehen Sie, dass nichts festgelegt ist und die statische Dateifunktion deaktiviert ist. ** **.

5. Schließlich

Dieses Mal habe ich erklärt, wie das Speicherverzeichnis der statischen Dateien in flask und die URL für den Zugriff auf statische Dateien geändert werden.

Wie in Mikrodienst mit Python (Übersicht) gezeigt, besteht der Zweck darin, einen Mikrodienst (REST-API) zu erstellen, sodass die Funktion statischer Dateien ursprünglich ist Es ist nicht notwendig, aber ich habe festgestellt, dass diese Funktion automatisch aktiviert wurde, indem ich mir die Zuordnungsinformationen angesehen habe.

Ich dachte, dass einige Leute sich dessen vielleicht nicht so bewusst sind wie ich, also habe ich es diesmal als Artikel zusammengefasst.

Wie bei anderen Bibliotheken als flask möchte ich aus Sicherheitsgründen die standardmäßig aktivierten Funktionen gründlich untersuchen und den Inhalt verstehen, bevor ich sie verwende.

Recommended Posts

Ändern Sie das statische Dateispeicherverzeichnis und die URL in Flask
So ändern Sie das statische Verzeichnis von der Standardeinstellung in Flask
Überprüfen und verschieben Sie das Verzeichnis in Python
Best Practices für Konfigurationsdateien in Flask
Schreiben Sie die O_SYNC-Datei in C und Python
Erstellen und Bereitstellen von Flask-Apps mit PTVS
Ordnen Sie Controller automatisch URLs mit Flask zu
Holen Sie sich mit Scrapy rekursiv den Titel und die URL der Website