Jinja2
Vývojář | Pocoo |
---|---|
Aktuální verze | 3.1.4 (5. května 2024) |
Vyvíjeno v | Python |
Typ softwaru | knihovna, šablonovací systém, svobodný software, knihovna Pythonu a template language |
Licence | BSD licence |
Web | jinja.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 <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