Skip to:

Tiago Cogumbreiro

O Irrepupável

Back to top

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:

  1. tem de ser fácil a codificação para HTML (isto inclúi a codificação de URL's)
  2. convém que gere HTML correcto, ou que facilite tal tarefa
  3. 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
  4. tem de se poder extender um template
  5. 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.


Back to top