Web Templates em Python
Disclaimer: tou chateado outra vez!
Fazer um templating system não é propriamente uma tarefa fácil, tem um conjunto de subtilezas importantíssimas para ser um produto minimamente utilizável. O que me espanta é que certas bibliotecas sejam tão famosas e não consigam ultrapassá-las. Mas antes de mais deixem-me enumerá-las:
- tem de ser fácil a codificação para HTML (isto inclúi a codificação de URL's)
- convém que gere HTML correcto, ou que facilite tal tarefa
- tem de aceitar vários tipos de codificação de conteúdo - o mundo não gira em torno do ASCII - aka nem todos temos alfabetos ocidentais sem acentos
- tem de se poder extender um template
- a sintaxe para passar variáveis para lá tem de ser pouco verbosa
A maioria das bibliotecas famosas de templates consegue implementar (com mais ou menos maestria) a maioria destes pontos, mas um deles é geralmente esquecido, adivinhem qual é? Exacto, o ponto que diz que nem todas as páginas são inglesas/americanas! O que é ainda mais incrível é que muitas dessas bibliotecas são feitas por europeus...
Para terem uma ideia, comecei por usar o Kid e o problema existia. Felizmente consegui arranjá-lo.
No Cheetah esta problema só foi resolvido no ano passado, na versão 0.9.16a1! - não nos podemos esquecer que o projecto existe desde 2001.
Agora ao experimentar o
Pylons
voltei a esbarrar com o mesmo! Desta feita com o
Myghty
1.0! É que não há paciência! Aliás, por causa
de uma má escolha de um sistema de templates - até o
string.Template seria uma melhor opção - fico na
dúvida se o continuo a experimentar ou não... *sigh*
Mas voltando ao Pylons, um dos projectos que surgiu com este projecto é o Routes, que não é mais do que uma implementação do Rails Routes em Python. É um sistema relativamente interessante porque permite controlar os URL's, algo que muito prezo (como antes referi). Com o Routes torna-se também fácil o acopulamento e integração de componentes de um sítio.
Aprender a utilizar o dito Pylons não é propriamente trivial, ao
iniciarmos um projecto novo somos confrontados mais de
40 dos quais aproximadamente 20 são ficheiros de
Python. Parece-me um pouco contra a filosofia do Python esta
panóplia de módulos. Ainda por cima é mais um projecto que persiste
na utilização de variáveis globais (
reentrant programming diz-vos algo?). Também utiliza
from foo import *. Algo que muita gente que não
compreende é que o Python deve ser feito de modo
simples é essa a sua filosofia, qualquer tipo de
vodoo é algo que deve ser pensado muito bem e só trará problemas de
manutenção daqui a uns tempos.
Resumindo: duvido que continuarei a experimentar o dito cujo. O web.py sofre dos mesmos males (variáveis globais a dar com um pau), por isso é outra que nem vou começar a experimentar.