RkBlog

Hardware, programming and astronomy tutorials and reviews.

Szablony Mako w Pylons

Przewodnik opisujący jak dodać obsługę szablonów Mako w aplikacjach tworzonych we frameworku Pylons. Artykuł opisuje instalację mako i konfigurację tego systemu szablonów w Pylons.

Pylons daje nam możliwość stosowania kilku systemów szablonów. Domyślny obecnie Myghty oraz kid, mako i genshi. Szablony Mako będą następcą Myghty w kolejnych wersjach frameworka i na przykładzie tego systemu szablonów pokażę jak zmienić we frameworku system szablonów (sposób identyczny dla całej trójki).

Instalacja Mako

Instalacja jest prosta, poprzez setuptools. Wykonaj:
easy_install Mako


Mako w Pylons

paster create --template=pylons aplikacja
paster serve --reload development.ini
from aplikacja.lib.base import *

class TestController(BaseController):
    def index(self):
        return render_response('/szablon.html')

Zmiana domyślnego systemu szablonów

config.init_app(global_conf, app_conf, package='NAZWA_PROJEKTU')
config.init_app(global_conf, app_conf, package='aplikacja', template_engine='mako')
Po zrestartowaniu serwera i odświeżeniu strony http://localhost:5000/test/ zobaczymy ten sam tekst, lecz teraz Mako a nie Myghty zajmuje się szablonami. Wystarczy zmodyfikować zawartość szablon.html na np.:
# -*- coding: utf-8 -*-

<h1>To jest Test łóężźńą</h1>
${c.zmienna}
<br /><br />

<%
    rows = [[v for v in range(0,10)] for row in range(0,10)]
%>
<table>
    % for row in rows:
        ${makerow(row)}
    % endfor
</table>
   
<%def name="makerow(row)">
    <tr>
    % for name in row:
        <td>${name}</td>    % endfor
    </tr>
</%def>
Gdzie ${c.zmienna} to zmienna dodana do metody index naszego kontrolera:
# -*- coding: utf-8 -*-
from aplikacja.lib.base import *

class TestController(BaseController):
	def index(self):
		c.zmienna = 'To jestśłółęążźń zmienna'.decode('utf-8')
		return render_response('/szablon.html')
Dodanie:
# -*- coding: utf-8 -*-
Do szablonu ustawia jego kodowanie na utf-8 (a nie ascii) przez co możemy spokojnie stosować polskie znaki (plik zapisujemy w kodowaniu utf-8). Składnią i możliwościami Mako zajmiemy się w oddzielnym artykule.
RkBlog

Pylons, 14 July 2008,

Comment article