Auf einem Raspberry Pi habe ich eine einfache Flask-App geschrieben, die das aktuelle Datum und die Uhrzeit des Servers auf einer Webseite anzeigt. Dieser Teil funktioniert großartig. Die Seite sollte auch ein Bild anzeigen. Dieser Teil funktioniert nicht. Das Bild wird im Fotoordner unter dem App-Ordner Web_Test/Fotos gespeichert. Ich benutze eine CSS-Datei, die in einem statischen Ordner gespeichert ist, und das funktioniert gut. Ich benutze url_for die URL zum Bild zu erstellen:Flask Webseite kann Bilddatei nicht finden
<p><img src="{{url_for('photos', filename='image1.jpg')}}"></p>
Da Fotos ist kein bekannter Endpunkt für den url_for Befehl, habe ich: app.add_url_rule('/photos/<path:filename>', view_func=app.send_static_file)
den Fotos Ordner als Endpunkt hinzuzufügen. Jedes Mal, wenn ich über einen Webbrowser auf die Webseite zugreife, zeigt mein Befehlsfenster, in dem ich python (python3 photo.py) ausgeführt habe, GET /photos/image1/jpg HTTP/1.1" 404
an. Es gibt keine spezifischen Fehler, aber auch kein Bild. Ich habe viele der Beiträge hier zu diesem Thema gelesen, aber nichts hat geholfen. Das ist mein photo.py Code:
from flask import Flask, render_template
import datetime
app = Flask(__name__)
app.add_url_rule('/photos/<path:filename>', endpoint='photos', view_func=app.send_static_file)
@app.route('/')
def photo():
now = datetime.datetime.now()
timeString = now.strftime("%Y-%m-%d %H:%M")
templateData = {
'title' : 'Latest Photo',
'time' : timeString
}
return render_template('photo1.html', **templateData)
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=80)
Das ist mein photo1.html Code:
<!DOCTYPE html>
<head>
<link rel="stylesheet" href='/static/style.css' />
<title>{{title}}</title>
</head>
<body>
<h1>Latest Photo</h1>
<h2>Current date and time: {{time}}</h2>
<p> <img src="{{url_for('photos', filename='image1.jpg')}}"></p>
</body>
</html>
Irgendwelche Gedanken oder Anregungen würde sehr geschätzt werden. Danke!
Vielen Dank für Ihre Antwort. Ich habe das versucht, habe aber das selbe Problem. Das Befehlsfenster zeigt dies jetzt an: "GET /static/photo/image1.jpg HTTP/1.1" 404 – simlc0523
Nun, duh. Sobald ich den Ordnernamen richtig geschrieben habe (Fotos statt Foto), hat es funktioniert! Vielen Dank! Meine einzige Sorge ist, dass das Bild im Ordner Fotos regelmäßig aktualisiert wird. War mir nicht sicher, ob das ein Problem mit einem "statischen" Ordner sein würde. – simlc0523