Flask, Grafik einbinden

Django, Flask, Bottle, WSGI, CGI…
Antworten
wasserflo
User
Beiträge: 8
Registriert: Montag 4. Januar 2016, 20:08

Hi,
möglicherweise bin ich einfach nicht in der Lage die richtigen Begriffe bei Google einzugeben, aber ich stehe gerade vor dem Problem eine Grafik in ein Flask template einbauen zu wollen.
Der Body des HTML sieht so aus:
<body>
<h1>R2N1 Status Display</h1>
<img src="button1.gif" alt="Patrouille">
<a href="/patrol">Patrouille</a><br><br>
</body>

Die Grafik ist in dem Verzeichnis templates abgelegt.
Nach ein wenig Recherche habe ich gelesen, das es auch noch ein Verzeichnis static gibt. Habe ich ebenfalls angelegt und das Bild dort reinkopiert.
Hilft aber nicht.
in welches Verzeichnis müssen denn Bilder rein, damit Flask sie findet?
Meine Struktur ist jetzt so:
/pi
-/templates
-/static

Frohes neues Jahr
Florian
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Die Grafik sollte im static Ordner sein und du musst natürlich auch den richtigen Pfad mit url_for() angeben. Letzteres gilt auch für den Link zu /patrol.
wasserflo
User
Beiträge: 8
Registriert: Montag 4. Januar 2016, 20:08

Moin DasIch,
tut mir Leid. Aber das verstehe ich noch nicht.
Das Python prg sieht grob so aus:

Code: Alles auswählen

@app.route("/")
def main():
    tTime = (time.strftime("%d.%m.%Y %H:%M:%S"))
    message = tTime
    templateData = {
      'message' : message,
    }
    return render_template('main.html', **templateData)

@app.route("/patrol")
def patrol():
   os.mknod("patrol")
   tTime = (time.strftime("%d.%m.%Y %H:%M:%S"))
   message = tTime + " Patrol Mode"
   templateData = {
      'message' : message,
    }
   return render_template('main.html', **templateData)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80, debug=True)
    print "(Start)"

Seite wird angezeigt. Auch das 'Patrol' funktioniert. Nur die Grafik nicht.
Muss ich noch irgendwo angeben, wo andere Inhalte liegen?
Hab mal nach URL_FOR gegoogelt, verstehe das aber nicht so, als wenn man damit einen Pfad für weitere Inhalte angeben kann.

Gruß
Florian
Zuletzt geändert von Anonymous am Montag 4. Januar 2016, 21:42, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@wasserflo: statische Inhalte werden von Flask automatisch bereitgestellt, wenn sie im ./static Ordner liegen. Dazu muß man aber auch die richtige URL angeben:

Code: Alles auswählen

<body>
<h1>R2N1 Status Display</h1>
<img src="{{ url_for('static', filename='button1.gif') }}" alt="Patrouille">
<a href="/patrol">Patrouille</a><br><br>
</body>
wasserflo
User
Beiträge: 8
Registriert: Montag 4. Januar 2016, 20:08

Siehste, wenn man weiß, wie es geht....

Vielen Dank.
Antworten