Python TagebuchPython lernen – mein persönliches Tagebuch

Tagebuch-Eintrag #59
Flask – Templates erstellen

HTML-Templates für Flask erstellen. Das ist ein sehr interessantes Thema für mich. Für die Web-Entwicklung mit Flask komme ich nicht drumrum.
Werbung/Anzeige

Ich habe jetzt das eine oder andere Abschnitt von der Flask-Dokumentation übersprungen. Nicht, weil ich es schon kann, sondern weil ich es für mich persönlich besser finde mit zuerst mit Templates zu beschäftigen, und erst danach mit Routing-Methode und HTML Request zu beschäftigen.

Ich kann hier natürlich auch komplett daneben liegen und dann feststellen „Hätte ich doch bloß zuerst…“. Das Gefühl kennen sicher alle 😉

Render Template

Es ist durch aus möglich HTML-Code in den return-Wert einzugeben. Wie ich bei meinem Hallo Welt-Code schon getestet habe. Aber für eine komplexe Webseite, ist es nicht praktikabel und deswegen wird HTML-Templates verwendet.

Generating HTML from within Python is not fun…

Flaks-Dokumentation – Rendering Templates

Um HTML-Template verwenden zu können, wird von Flask das Modul render_template benötigt und importiert. Danach muss noch der return-Wert angepasst werden. Statt wie bisher Strings zurückzugeben, wird jetzt das Template gewählt und den darin enthaltenen Code.

Für meine About-Seite, gebe ich meinen Namen unter der Variable name zurück. Die Funktionsbeschreibung von render_template sieht zwei Parameter vor. der erste Parameter ist die Datei des Templates im templates-Ordner und dann der Kontext/Variable, was an das Template übergeben werden soll – in meinem Fall, meinen Namen.

Orderstruktur Flask Template
Orderstruktur Flask Template

Demzufolge sieht mein Code für die About-Seite so aus:

@app.route('/about')
def its_me():
    # Wert name wird im index.html-Template übergeben und ausgegeben
    return render_template('index.html', name='Jing')

Und meine dazugehörige index.html im Ordner templates, im Hauptverzeichnis des Flask-Projektes.

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]>      <html class="no-js"> <!--<![endif]-->
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        {% if name %}
         <title>learn FLASK Hallo {{ name }}</title>
        {% else %}
            <title>learn FLASK Halle Welt</title>
        {% endif %}
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="">
    </head>
    <body>
        <!--[if lt IE 7]>
            <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="#">upgrade your browser</a> to improve your experience.</p>
        <![endif]-->
        <strong>Das ist die index.html Datei</strong>
        {% if name %}
        <h1>ABOUT</h1>
        <strong>Hallo {{ name }}!</strong>
        {% else %}
        <h1>Startseite</h1>
        <strong>Hallo Welt!</strong>
        {% endif %}

        <script src="" async defer></script>
    </body>
</html>

Ausgabe der Inhalte.

Flask Template Ausgabe
Flask Template Ausgabe

Jinja Template Engine

Flask verwenden das Jinja Template Engine und darin werden die Ausgaben und Funktionen von Flask ausgeführt/ausgegeben. In meiner index.html-Datei sind die Jinja Template-Variable mit {{ variable }} definiert. Ebenso die das bekannte If-Else-Statement in der Jinja-Schreibweise {{ if variable }}.

Ich habe in meinem Code geschrieben, wenn ein Name eingetragen wurde, gib Halle NAME aus. Ansonsten Hallo Welt. Sowohl im BODY also auch im TITLE-TAG. Aber es ist immer die gleiche Datei (index.html).

Ich werde später sicherlich noch im Detail mich mit dem Jinja-Template-Engine beschäftigen, für den Anfang reicht es die grundlegende Funktion zu kenne.

Was noch fehlt ist natürlich die CSS-Datei, die in der index.html-Datei noch nicht eingebunden wurde. Das ist Thema für den nächsten Tagebuch-Eintrag.

# # ## ENDE Tagebuch-Eintrag #59 | Flask – Templates erstellen
Werbung/Anzeige
Schlagwörter im Tagebuch-Eintrag:

Kommentar schreiben




Werbung/Anzeige