flask: jinja2.exceptions.TemplateNotFound: index.html | Wie fixen?

1 Antwort

Die Pfadangabe für die Templates falsch.

Das ist deine aktuelle Ordnerstruktur:

/
  main.py
  /web
      flask_app.py
      /templates
        index.html
  /systm
    d.py
    main.py

In flask_app startest du die Flask-Anwendung, daher ist web auch das Rootverzeichnis für die Webapplikation. Nun gibst du an, dass ausgehend von dort die Templates unter web/templates liegen sollen, also unter /web/web/templates. Dieses Verzeichnis gibt es aber nicht.

Lass einfach die Angabe des Template-Ordners (und am besten ebenso des static-Ordners) komplett weg.

Die systm/main.py würde ich im Übrigen löschen, der Endpunkt für /products sollte in die flask_app.py.

Zuletzt noch eine Anmerkung zur Projektstruktur: Sofern die Anwendung klein und einfach bleibt (so wie aktuell bei dir), kann die von Flask vorgeschlagene Standardstruktur ruhig beibehalten werden. Für Projekte mit mehreren Modulen/vielen Routen macht eine Auffächerung Sinn (Beispiel 1, Beispiel 2 (siehe Punkt 3)).

Paddy364 
Fragesteller
 23.10.2023, 14:02

Danke für deine Antwort!

Du meinst diese Zeile? Ja, welche sonst xD

"app = Flask(__name__, template_folder='web/templates', static_folder='web/static')" ?

Das habe ich so übernommen, wie es mir vorgeschlagen wurde. Als ich die db_connect nicht ausgelagert habe, hat es mit dem Pfad trotzdem funktioniert.

Die Ordnerstruktur habe ich selber angelegt, da es ein umfangreiches Projekt ist/wird. Ich wollte nur mit etwas anfangen, um A: wieder rein zu kommen, in die Programmierung und B: zu testen ob die Config funktioniert.

Bin davon ausgegangen, dass die Angabe dazu dient, dass die Zeile den korrekten Pfad verwendet. /web/templates/Index.html und nicht, dass es web als Standard schon gibt, da wie gesagt eigene Struktur und daraus /web/web/templates/index.html wird.

Teste ich später mal aus und lasse dich wissen, ob es funktioniert.

Danke nochmals! :)

0
Paddy364 
Fragesteller
 23.10.2023, 19:34

Guten Abend. Ich habe es nun getestet, also das web-Verzeichnis entfernt und es funktioniert. Also:

app = Flask(__name__, template_folder='web/templates', static_folder='web/static')

zu:

app = Flask(__name__, template_folder='templates', static_folder='static')

Hinterfrage ich am besten nicht, warum es mir so vorgeschlagen wurde..

Danke für deine Hilfe!

0
regex9  23.10.2023, 20:17
@Paddy364

Wie gesagt brauchst du generell beide Angaben (template_folder, static_folder) nicht, denn sie weichen ja nicht vom Standardwert ab. Der Pfad geht stets vom Webrootverzeichnis aus.

0