Projekt: Templates



Was sind denn Templates?

Ein Template ist eine HTML-Datei mit verschiedenen Platzhaltern, beispielsweise für

Der Platzhalter wird dann in einem Skript ausgewertet und durch einen konkreten Wert ersetzt. Dazu schreibt man beispielsweise für den Titel der HTML-Datei den Platzhalter ${sitetitle} ins Template:

<title>${sitetitle}</title>

Was jetzt noch fehlt, ist eine Logik für die Auswertung des Templates. Dazu wird die Template-Datei geöffnet und zeilenweise nach den Platzhaltern abgesucht.

from string import Template # ...
htmlSite  = ''
for line in templateFile:
    tLine = Template(line)
    htmlSite = htmlSite + tLine.substitute( sitetitle=htmlTitle )

Zuerst wird über die string.Template-Klasse ein Template-Objekt mit Namen tLine erzeugt. Die Methode substitute ersetzt dann den Platzhalter ${sitetitle} durch htmlTitle. Woher kommt htmlTitle? Gute Frage! Dieser Python-Kurs besteht aus Markdown-Dateien, die in der ersten Zeile den Titel der HTML-Datei enthalten (unterstrichen durch viele =====):

Projekt: Templates
==================

Ich muss also nur noch die erste Zeile der betreffenden Markdown-Datei auslesen und in einem Skript den Platzhalter durch htmlTitle (= erste Zeile der Markdown-Datei) ersetzen. Genau dies macht das Python-Skript htmlTitle.py, und auf diese Weise wurden die Titel der HTML-Dateien in diesem Kurs erzeugt.


Aufgaben

1. Studiere den Mechanismus der Parameter-Übergabe im Python-Skript htmlTitle.py, verantworlich hierfür ist das Modul sys. Fragen hierzu: Welche Datei wird über den Parameter übergeben, in welcher Liste stehen die Parameter, welchen Parameter erhält man für den Index 0 und wofür steht überhaupt der Index?

2. Im Python-Skript htmlTitle.py steht das Template head.temp explizit, ist also "hartkodiert" (→ hardcoding). Erweitere die Funktionalität des Skripts und prüfe auf einen zweiten Parameter, der das entsprechende Template enthält. Binde dann dein eigenes Template ein.

3. Eine anspruchsvolle Aufgabe besteht darin, einen weiteren Platzhalter im Template einzuführen, z. B. für eine css-Datei. Anschließend wird das Python-Skript htmlTitle.py entsprechend überarbeitet, good Luck!


→ sp, 2023-07-31