Introdução


Vamos começar através de um exemplo. É o mesmo exemplo usado no tutorial oficial. Abra um arquivo novo no seu editor de códigos preferido. Pode chamar esse arquivo de code.py.


Digite nesse arquivo a primeira linha:

import web

Essa linha importa o framework web.py.

urls = (
   '/', 'view'

)

Esta variável, urls, que é na verdade uma tupla, conterá os dados necessários para fazer o mapeamento de endereço-função(você entenderá isso em breve). Ela é formada assim: a primeira parte é uma expressão regular que deverá 'bater' com o endereço. Exemplos de expressões regulares válidas para se pôr nessa tupla são: '/', '/help/faq/', '/item/(\d+)', etc. ( O 'd+' significa o mesmo que uma cadeia de dígitos.
Os parênteses fazem com que a parte da url que 'bata' com essa expressão regular, essa sequência de dígitos, seja armazenada numa variável e usada posteriormente.).

A segunda parte é o nome de uma classe para qual a requisição vai ser passada. Exemplos de nomes válidos para essa parte são: 'view', 'welcomes.hello' (sendo a classe hello parte do módulo welcomes) ou ainda 'get_\1' (note que o '\1' será substituido pela primeira parte da url capturada por uma expressão regular, isso é algo difícil de explicar sem um exemplo. Fica para o próximo artigo); contudo qualquer captura por expressão regular restante sérá mandada para sua função na forma de argumento.

class view:
    def GET(self):
        print 'Hello World'

Isso faz com que a classe view, ao receber uma requisição do tipo GET(ela é feita quando você abre a página normalmente), imprima na tela o texto 'Hello World', um texto puro, não é HTML.

web.internalerror = web.debugerror

Essa linha faz com que o framework produza uma página com várias informações úteis quando ocorrer um erro interno na sua aplicação. Logicamente você vai querer comentar essa linha quando lançar o seu sistema para os usuários, assim eles não verão aquela linguagem de outro mundo =0.

if __name__ = '__main__': web.run(urls, web.reloader)

Essa linha faz com que o web.py rode a sua aplicação conjutamente com o servidor apenas quando o arquivo code.py for executado diretamente. Assim quando o seu código code.py for apenas importado o servidor não será lançado nem sua aplicação executada.Quanto ao web.run. O primeiro argumento, urls, é a tupla definida logo no começo que serve para o mapeamento de páginas-funções. Os argumentos posteriores servem para 'middleware' -- funções que ajudam o desenvolvedor durante o processo de desenvolvimento da aplicação.

Nesse nosso exemplo usamos a função de middleware web.reloader, que faz com que a página atualiza-se sempre que o código desta seja modificado. Portanto, eliminando a necessidade de ficar reiniciando o servidor sempre que houver alguma modificação no código. Você provavelmente vai querer desativar essa função quando lançar a sua aplicação web para os usuários, pois não há necessidade real nesse caso, contudo ela é de inestimável valor durante o desenvolvimento.


Existe, além da web.reloader, a função de middleware web.profiler, que exibe o tempo usado por cada função da sua página durante a execução de sua aplicação, possibilitando a otimização de código.


Agora execute a sua aplicação num terminal: python code.py para iniciar um servidor web em conjunto com sua aplicação (para mudar a porta padrão, 8080, para, por exemplo, 8002, execute-o da seguinte maneira: python code.py 8002).


Sua aplicação também pode ser executada com um script CGI ou um script FastCGI -- o web.py fará a coisa certa automaticamente. E como o web.py é feito sobre o WSGI, a interface padrão para aplicações Web em Python, você também poderá rodar sua aplicação sobre outras aplicações, o mod_python, por exemplo, é um destes.


Agora se você visitar a página: http://localhost:8080, deverá ver escrito 'Hello World'.


***


É isso. Até o próximo artigo: Templates.


Ruivaldo Neto ( ruivaldo la no gmail.com )