Web.py: o sistema de templates
Posted by Gabriel Verta | Posted in Python, web.py | Posted on 12-02-2010-05-2008
8
Após a apresentação do framework web.py, vamos ver como funciona o template engine do web.py.
Vamos começar criando os arquivos. Crie um arquivo chamado segundo.py, e ao lado uma pasta chamada templates.
Exemplo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import web urls = ( '/', 'Segundo' ) app = web.application(urls, globals()) render = web.template.render('templates') class Segundo(object): def GET(self): return render.segundo('Gabriel Verta') if __name__ == '__main__': app.run() |
Vamos descrever as novidades em relação ao exemplo da apresentação do framework:
9 | render = web.template.render('templates') |
Aciona o template engine para a pasta de nome templates, criada anteriormente.
13 | return render.segundo('Gabriel Verta') |
Indica que o retorno da chamada via GET será a renderização do template segundo.html, passando como parâmetro para o template a string ‘Gabriel Verta’.
Vamos então criar o arquivo segundo.html dentro da pasta templates.
1 2 3 4 5 6 7 8 9 | $def with (nome) <html> <head> <title>$nome</title> </head> <body> <h1>Olá, $nome</h1> </body> </html> |
A explicação:
1 | $def with (nome) |
Indica que o template irá receber uma variável, e que está dentro do template poderá ser utilizada como nome.
4 | <title>$nome</title> |
Exibe o valor da variável nome, assim como na linha 7.
Rodando o arquivo segundo.py, e acessando http://localhost:8080/ veremos a mensagem: “Olá, Gabriel Verta”, além de a página ter o título “Gabriel Verta”.
Funcionalidades
Para exibição das variáveis na tela poderemos utilizar as seguintes sintaxes:
$string. Uma expressão ${valor1 + valor2}. Uma chave de dicionário $dicionario[chave]. $(limit)ando uma variável
Caracteres escapados
Caso uma variável string tenha o seguinte conteúdo a ser apresentado ao usuário: “20 > 10″, quando passamos esta string como parâmetro para o template ao exibi-lá ela será trocada por “20 > 10″. Para evitar que isto aconteça utilize a seguinte sintaxe:
$:nomeEscapando o cifrão ($)
$$
Estruturas de controle
1 2 3 4 5 6 7 8 9 10 11 12 | $for i in range(10): Contando: $i $for i in range(10): Contando $i $while posts: Exibe $posts.pop() $if variavel1 > variavel2: Eu já sabia que 20 era maior que 10 $else: Como assim 20 não é maior que 10? |
Repare na linha 2 que é necessário a tabulação, assim como nos scripts python, nos templates.
Nos próximos posts iremos ver estas demais funcionalidades em ação.
