Jinja2
Jinja2 − silnik szablonów dla języka programowania Python pozwalający na separację logiki aplikacji (Python) od jej warstwy prezentacyjnej (HTML). Oprogramowanie o otwartym kodzie źródłowym, udostępnianym na zasadach licencji BSD. Twórcą rozwiązania jest Armin Ronacher[1] oraz współautorzy. Istnieje również inna implementacja tj. Twig dla języka PHP[2] oraz JavaScript[3].
Cechy szablonów Jinja2:
- Pełne wsparcie dla Unicode.
- Automatyczne przeciwdziałanie XSS w znacznikach modyfikacji HTML.
- Możliwość wykonywania kodu w piaskownicy.
- Możliwość tworzenia własnych znaczników, filtrów, testów i zmiennych globalnych.
- Dziedziczenie szablonów.
- Łatwe do debugowania.
Zasada działania Jinja2 polega na umieszczaniu w plikach źródłowych (np. z rozszerzeniem .html) znaczników, które następnie są zastępowane generowaną przez aplikację treścią. System umożliwia stosowanie struktur kontrolnych (testów (if), pętli (for), itp.).
Jinja2, podobnie jak Smarty, wyposażony jest w łatwy w użyciu system filtrów podobny w działaniu do potoku w systemach Unix.
Przykład
edytujPoniżej przedstawiono przykład kodu źródłowego Pythona 3 z zastosowaniem szablonu Jinja2.
from jinja2 import Template
szablon = Template(u'''\
<!DOCTYPE html>
<html>
<head>
<title>{{zmienna|escape }}</title>
</head>
<body>
{% for element in tablica %}
{{element }}{% if not loop.last %},{% endif %}
{% endfor %}
</body>
</html>
''')
print(szablon.render(
zmienna = 'Wartość ze znacznikiem <unsafe>',
tablica = [1, 2, 3, 4, 5, 6]
))
Powyższy kod spowoduje wyświetlenie poniższego kodu HTML:
<!DOCTYPE html>
<html>
<head>
<title>Wartość ze znacznikiem <unsafe></title>
</head>
<body>
1,
2,
3,
4,
5,
6
</body>
</html>
Przypisy
edytuj- ↑ mitsuhiko – Overview [online], GitHub [dostęp 2020-06-28] (ang.).
- ↑ Home – Twig – The flexible, fast, and secure PHP template engine [online], twig.symfony.com [dostęp 2020-06-28] .
- ↑ twigjs/twig.js, twig.js, 26 czerwca 2020 [dostęp 2020-06-28] .