Jinja (silnik szablonów)
Oryginalni autorzy | Armina Ronachera |
---|---|
Pierwsze wydanie | 17 lipca 2008 |
Wersja stabilna | |
Magazyn | |
Napisane w | Pyton |
Typ | Silnik szablonów |
Licencja | Licencja BSD |
Strona internetowa |
|
Jinja to silnik szablonów internetowych dla języka programowania Python . Został stworzony przez Armina Ronachera i jest dostępny na licencji BSD . Jinja jest podobna do Django , ale zapewnia wyrażenia podobne do Pythona, zapewniając jednocześnie, że szablony są oceniane w piaskownicy . Jest to tekstowy język szablonów, dzięki czemu może być używany do generowania dowolnych znaczników, a także kodu źródłowego.
Silnik szablonów Jinja umożliwia dostosowywanie tagów, filtrów, testów i globali. Ponadto, w przeciwieństwie do silnika szablonów Django, Jinja umożliwia projektantowi szablonów wywoływanie funkcji z argumentami na obiektach. Jinja jest Flask i jest również używany przez Ansible , Trac i Salt .
Cechy
Niektóre cechy Jinji to:
- wykonanie w piaskownicy
- automatyczna ucieczka HTML , aby zapobiec atakom typu cross-site scripting (XSS).
- dziedziczenie szablonu
- kompiluje się do optymalnego kodu Pythona just-in-time
- opcjonalna kompilacja szablonów z wyprzedzeniem
- łatwe do debugowania (na przykład numery linii wyjątków bezpośrednio wskazują właściwą linię w szablonie)
- konfigurowalna składnia
Jinja, podobnie jak Smarty , jest również dostarczana z łatwym w użyciu systemem filtrów, podobnym do potoku Unix .
Przykład
Oto mały przykład pliku szablonu example.html.jinja
:
<!DOCTYPE html> < html > < nagłówek > < tytuł > {{ zmienna | escape }} </ title > </ head > < body > {% - dla elementu w item_list %} {{ item }}{% if not loop .last %} , {% endif %}
{% - endfor %} </ body > </ html >
i kod szablonu:
from jinja2 import Template with open ( 'example.html.jinja' ) as f : tmpl = Template ( f . read ()) print ( tmpl . render ( zmienna = 'Wartość z <niebezpiecznymi> danymi' , item_list = [ 1 , 2 , 3 , 4 , 5 ,
6 ] ))
Spowoduje to utworzenie ciągu HTML:
<!DOCTYPE html> < html > < head > < title > Wartość z < niebezpieczne > dane </ tytuł > </ głowa > < treść > 1, 2, 3, 4, 5, 6 </ treść > </ html >