Jinja2

Jinja2
Logo
VývojářPocoo
Aktuální verze3.1.2 (28. dubna 2022)
Vyvíjeno vPython
Typ softwaruknihovna, šablonovací systém, svobodný software, knihovna Pythonu a template language
LicenceBSD licence
Webjinja.pocoo.org
Některá data mohou pocházet z datové položky.

Jinja2 je moderní šablonovací systém pro jazyk Python vycházející ze syntaxe Django. Mezi hlavní výhody patří přehlednost, rozšířitelnost (pomocí filtrů a pluginů), snadnost použití a vysoká rychlost (srovnatelná se šablonovacím systémem Mako). Umožňuje oddělit kód aplikace od její prezentace. Používá kódování Unicode.

Příklady použití

Použití Jinja2 je velmi jednoduché. Pro nahrazování v textových řetězcích můžeme knihovnu vyzkoušet přímo v interaktivním interpretu Pythonu:

>>> from jinja2 import Template
>>> template = Template('Hello {{ name }}!')
>>> template.render(name='John Doe')
u'Hello John Doe!'

Pokud jsou šablony uložené v adresáři, je třeba navíc vytvořit objekt prostředí, z něhož se šablony budou používat:

>>> environment = jinja2.Environment(loader=jinja2.FileSystemLoader("/webova/slozka/templates/"))
>>> # kompilace sablon do bytecodu zrychluje jejich pouzivani
>>> environment.compile_templates("/webova/slozka/templates_c/", zip=None, py_compile=True)
>>> t = environment.get_template("sablona.html")
>>> # vyrenderujeme sablonu s predanyma hodnotama
>>> t.render(jmeno="Dominik", prijmeni="Opavský")

Podoba souboru sablona.html může být následující:

Vaše jméno je {{jmeno}} a příjmení je {{prijmeni}}.

Oddělení šablony od kódu

V praxi bývá obvykle šablona oddělena od kódu, jak ukazuje následující jednoduchý příklad generování HTML kódu:

<!DOCTYPE html>
<html>
  <head>
    <title>{{ variable|escape }}</title>
  </head>
  <body>
  {%- for item in item_list %}
    {{ item }}{% if not loop.last %},{% endif %}
  {%- endfor %}
  </body>
</html>

Je-li šablona uložena v souboru example.html.jinja[1], po zpracování následujícím programem:

from jinja2 import Template
with open('example.html.jinja') as f:
    tmpl = Template(f.read())
print tmpl.render(
    variable = 'Value with <unsafe> data',
    item_list = [1, 2, 3, 4, 5, 6]
)

Je výsledkem následující HTML kód:

<!DOCTYPE html>
<html>
  <head>
    <title>Value with &lt;unsafe&gt; data</title>
  </head>
  <body>
    1,
    2,
    3,
    4,
    5,
    6
  </body>
</html>

Odkazy

Reference

V tomto článku byl použit překlad textu z článku Jinja (template engine) na anglické Wikipedii.

  1. RONACHER, Armin. Template Designer Documentation [online]. [cit. 2016-01-07]. Jinja šablony mohou mít libovolnou příponu, např. .html, .xml.. Dostupné v archivu pořízeném dne 2016-11-13. 

Externí odkazy

Média použitá na této stránce

Jinja software logo.svg
Autor: Jinja Team, Licence: BSD
The logo of the Python template engine Jinja.