Jinja Templates

{% … %}`: Statements wie for-loops, if/else, Python-Funktionsaufrufe

  • {{ … }}: einfache Ersetzungen von Daten (aus dem Datenmodell)

  • {# … #}: Kommentare ... erscheinen nicht im gerenderten Code


HTML-Seitengenerierung

Statische HTML-Seiten werden durch Generierung wartbar. Auf diese Weise werden die statischen Anteile in das Template geschrieben und die dynamischen Teile (z. B. Informationen aus einer Datenbank) werden elegant über Jinja2-Syntax hinzugefügt.

Packt man noch ein bisschen Zucker in Form von Twitter-Bootstrap hinzu, kommt man innerhalb kürzester Zeit zu einem professionellen Look-and-Feel


Jinja 2 mit Python

Insbesondere als DevOps Engineer gehören Python und Jinja zur Grundausstattung. Die Möglichkeiten von Shell-Scripting sind dann doch recht schnell erschöpft ... es fehlt einfach an so vielen Dingen (Exception Handling, Content-Handling, Debugging, Datenstrukturen).

from jinja2 import Template

template = Template("Hello {{ something }}!")
print(template.render(something="World"))

Bei größeren Templates möchte man natürlich nicht jede einzelne Variable übergeben müssen. In solchen Fällen verwendet man ein Dictionary:

def render_template(template_file: Union[str, Template], variables: Dict[str, str]) -> str:
    env = Environment(loader=FileSystemLoader(''))
    template = env.get_template(template_file)
    return template.render(input=variables)

Last updated

Was this helpful?