Wie kann ich das Frontend mit dem Backend verbinden?

1 Antwort

Flask verwendet die Jinja2-Template Engine. Diese ermöglicht es dir, Werte aus dem Python-Backend in ein HTML-Dokument einzubinden.

Ein Beispiel:

Du hast einen Controller, der die render_template-Methode aufruft.

from flask import current_app as app
from flask import render_template

@app.route('/')
def index():
  return render_template("index.html", title="My first website", greeting="Hello world!")

Dieser wird einmal der Pfad zum Template übergeben (das kann eine Datei mit der Endung .html sein - lege sie im templates-Ordner ab) und anschließend (in Form von kwargs) die Daten, die du im Template einfügen möchtest. In diesem Beispiel wären das ein Seitentitel und eine Begrüßungsformel.

Du könntest stattdessen auch ein Dictionary übergeben:

data = {
  "title": "My first website",
  "greeting": "Hello world!"
}
return render_template("index.html", **data)

In der Template-Datei kannst du anschließend Jinja-Ausdrücke anwenden, also bspw. die Daten anhand ihrer Schlüsselnamen einsetzen. Sie werden von der render_template-Funktion ausgewertet und ersetzt.

<!doctype html>
<html>
  <head>
    <title>{{title}}</title>
    <meta charset="utf-8">
  </head>
  <body>
    <h1>{{greeting}}</h1>
  </body>
</html>

Du kannst mit Jinja noch einiges mehr - bspw. können unterschiedliche Templates geschachtelt werden oder Verzweigungen und Schleifen sind möglich. Sofern das für dich von Interesse ist, kannst du dazu in der Dokumentation nachlesen.