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:

$:nome

Escapando 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. ;)

Web.py: Framework para desenvolvimento web com Python

Posted by Gabriel Verta | Posted in Python, web.py | Posted on 10-02-2010-05-2008

2

Neste post venho lhes apresentar o framework web.py. Framework este voltado para web e de fácil aprendizagem e utilização, assim como a linguagem Python.

Caso ainda não tenha tido um contato com a linguagem recomendo uma passagem pelos tutoriais da Python Brasil.

Instalação
Uma das formas de instalar o framework é usando o setuptools, aplicativo para instalação de bibliotecas python.

No Ubuntu a instalação do setuptools pode ser feita através do seguinte comando:

$ sudo aptitude install python-setuptools

Vamos então a instalação do web.py:

$ sudo easy_install web.py

Como diriam lá na facul: Muuuuuuito fácil!

Outras formas de instalar podem ser vistas na página de install do web.py

Exemplo de utilização

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import web
 
urls = (
    '/', 'Primeiro'
)
 
app = web.application(urls, globals())
 
class Primeiro(object):
    def GET(self):
        return "Primeiro exemplo"
 
if __name__ == '__main__':
    app.run()

Vamos explicar por partes:

1
import web

Importa o framework para utilização na aplicação.

3
4
5
6
7
urls = (
    '/', 'Primeiro'
)
 
app = web.application(urls, globals())

Adiciona a uri / a aplicação. Quando a uri / for chamada a classe que será executada será a de nome Primeiro.

9
10
11
class Primeiro(object):
    def GET(self):
        return "Primeiro exemplo"

Quando utilizado do método GET, retornará a mensagem “Primeiro exemplo” ao usuário.

13
14
if __name__ == '__main__':
    app.run()

Coloca a aplicação para rodar, caso seja executado o script python diretamente.

Salve o arquivo como primeiro.py

Vamos então rodar o script:

$ python primeiro.py

Rodando o script será iniciado um servidor web rodando na porta padrão do web.py que é a 8080.

Acessando agora no navegador http://localhost:8080/. Ele irá exibir a mensagem que colocamos anteriormente.

Caso a porta 8080 já esteje em uso, você pode alterar a porta que a aplicação irá rodar passando como parâmetro ao script a porta que você deseja rodar a aplicação:

$ python primeiro.py 8090

Neste exemplo, o servidor web iniciará na porta 8090.

Nos próximos posts explicarei um pouco sobre o sistema de templates do web.py e acesso a banco de dados.

É isso ai ;)

Raiz Cubica em Linguagem de Programação

Posted by Gabriel Verta | Posted in Geral, Python | Posted on 12-03-2009-05-2008

0

Hoje o Rafael Orion (vulgo Orion Rings), me achou num post da Stiod procurando por como fazer uma raiz cúbica.

Para isto basta elevar a um terço, veja o exemplo em Python:

8 ** (1.0/3)

O post original está no Blog da Stiod