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.

Jinja2
Logo
VývojářPocoo
Aktuální verze3.1.4 (5. května 2024)
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.

Příklady použití

editovat

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

editovat

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>

Reference

editovat

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

editovat