Jinja2
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.
Vývojář | Pocoo |
---|---|
Aktuální verze | 3.0.1 (18. května 2021) |
Vyvíjeno v | Python |
Typ softwaru | knihovna, šablonovací systém, svobodný software a knihovna Pythonu |
Licence | BSD licence |
Web | jinja.pocoo.org |
Některá data mohou pocházet z datové položky. |
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 <unsafe> 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.
- 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
- WWW server Jinja
- Jinja2 na Pythonovém webu pypi
- Jinja2 na GitHub