Nicht in der Lage abrufen von Dateien von send_from_directory() im Kolben
Ich habe eine html-Datei, die Referenzen statische Objekt wie dieses
<img src="img/snacks.png">
<link href="css/bluestrap.css" rel="stylesheet">
Daher versucht der browser, rufen Sie diese über und Fläschchen nicht so
http://127.0.0.1:5000/img/snacks.png
Gibt es viele Verweise auf mehrere Dateien, also die änderung der Verweise ist nicht möglich. Wie kann ich dienen, diese statischen Dateien aus der FLASCHE
Habe ich kopiert all diese Dateien zu den 'statischen' Ordner und versucht diese
@app.route('/<path:filename>')
def send_file(filename):
return send_from_directory('/static', filename)
Allerdings funktioniert dies nicht, gibt es irgendeine andere Möglichkeit, dies zu tun ? oder was mache ich falsch ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Produktion, die Sie nicht wollen, um zu dienen statische Dateien mit Hilfe des flask-server. Ich schlage vor, Sie verwenden eine geeignete web-server zu tun.
Für dev, da Sie nicht wollen, zu verwenden
url_for
haben, können Sie versuchen, Sie zu initialisieren, Ihr Fläschchen app als unten. Auf diese Weise, Kolben weiß, wo Sie Ihre statische Dateien sind.Finden Sie in diesem Beitrag mit viel info
Statische Dateien, die in Kolben - robot.txt, sitemap.xml (mod_wsgi)
url_for
mit'static'
bereits Gesprächesend_from_directory
ich sehe nicht Ihren PunktWenn man sich die docs für
send_from_directory
du wirst sehen, dass der Pfad zu dem Verzeichnis, in dem die Dateien aufbewahrt werden auf der Festplatte. Es sei denn, Sie haben Ihre Bild-Dateien gespeichert sind, in einem root-level-Verzeichnis mit dem Namenstatic
werden Sie wollen, aktualisieren Sie Ihre Datei Pfad:That being said, wenn Sie dies für alles, was unter eine Last, es ist besser, um sicherzustellen, dass Ihre web-server dient der Dateien, anstatt statischen Dateien aus Ihrer Anwendung.
/static
auf der Festplatte? Das heißt, ist es nebenusr
,etc
und so weiter unter/
im Dateisystem (nicht zu Ihrem webserver-root)?Ich denke, ein besserer Weg, dies zu tun wäre:
Anstatt das senden der Dateien an zwei verschiedenen Standorten, dies würde eine permanente Umleitung auf die richtige URL. Wie schon andere gesagt haben, es ist auch eine gute Idee zu dienen, die statische Dateien direkt mit nginx oder Apache.
Nicht verwenden Kolben eingebaute server in der Produktion. Es ist nur für die Entwicklung! Und keine Fläschchen zu dienen statischen Elemente. Es ist langsam! In der Produktion verwenden ein webserver vor der Flachmann wie apache2, nginx oder lighttpd. Diese Server sind in der Lage, rewrite eine URL und dienen der statischen Elemente.
Bereitstellen Kolben: http://flask.pocoo.org/docs/deploying/
Wie zum umschreiben einer URL: apache2, nginx, lighttpd.