Składnia szablonów mako

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}
Gdzie u - dla odnośników, h - HTML, x - XML. Przykładowo ucieczka dla odnośników URI dla podanej frazy:
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
Wyrażenie zapisywane jest w wierszu zacznającym się od znaku % po czym podane jest wyrażenie. Każde wyrażenie musi być zamknięte:
% 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"/>
Keszowanie i możliwe argumenty opisane są w dokumentacji mako.

include

Dołącza sprarsowaną zawartość podanego pliku:
<%include file="plik.html"/>
RkBlog

Pylons, 14 July 2008

Comment article
Comment article RkBlog main page Search RSS Contact