Składnia szablonów mako
14 July 2008
Comments
Niniejszy artykuł opisuje składnie szablonów Mako i stanowi przedłużenie artykułu opisującego zastosowanie tego systemu we frameworku Pylons.Podstawy składni
Zmienne w szablonach deklaruje się:${zmienna}
Znacznik zostany zastąpiony przez wartość zmiennej o podanej nazwie. Zawartość nawiasów klamrowych jest parsowana przez interpreter pythona więc można stosować składnię pythona:
${zmienna.upper()} ${liczba1 - liczba2}
Unikanie znaków specjalnych
Mako umożliwia automatyczną konwersję znaków specjalnych - dla odnośników URI, kodu HTML czy kodu XML. Realizowane jest to poprzez filtry: HTML, URI and XML${c.zmienna | u} ${c.zmienna | h} ${c.zmienna | x}
To jestśłółęążźń zmienna
To+jest%C5%9B%C5%82%C3%B3%C5%82%C4%99%C4%85%C5%BC%C5%BA%C5%84+zmienna
Struktury kontrolne
Struktury kontrolne - inaczen wyrażenia warunkowe if/else, pętle czy try/except definiuje się następująco:% if c.liczba==5: zmienna c.liczba ma wartość 5 % endif
% end[NAZWA_WYRAŻENIA]
Inny przykład:
% for a in ['one', 'two', 'three', 'four', 'five']: % if a[0] == 't': its two or three % elif a[0] == 'f': four/five % else: one %endif % endfor
Komentarze
Komentarze w szablonach zaczynają się od znaku # na początku wiersza# to jest komentarz
Łamanie wierszy
Do łamania wierszy służy ukośnik \:test test test
Bloki z kodem pythona
W mako możemy też definiować bloki z kodem pythona. Robi się to w następujący sposób:<%
#to jest blok z kodem pythona
rows = [[v for v in range(0,10)] for row in range(0,10)]
%>
Tagi
Mako oferuje również zestaw tagów o składni podobnej do XML, z tym że pierwszym znakiem jest %. Tagi te mają/mogą mieć atrybuty, z których część obsługuje ${}. Poniżej zestawiono kilka z nich.<%include file="foo.txt"/>
<%include file="/foo/bar/${myfile}.txt"/>
<%def name="foo" buffered="True">
this is a def
</%def>
page
Tag określa parametry i właściwości (keszowanie) szablonu z jakimi ma być wywołany. Przykłady:<%page args="x, y, z='default'"/>
<%page cached="True" cache_type="memory"/>
include
Dołącza sprarsowaną zawartość podanego pliku:<%include file="plik.html"/>
RkBlog
Comment article