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.
Das Verzeichnis, in dem statische Dateien in der Flasche gespeichert sind, kann mit "static_folder" geändert werden. Die Standardeinstellung ist das Verzeichnis "statisch".
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. ** **.
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.
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.
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. ** **.
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.
static_folder = None
zum Deaktivierenno_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))
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. ** **.
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