Curso web2py

Criando novas páginas

Utilizando o controller default.py da aplicação Welcome, definimos uma página da seguinte maneira:

def hello_world():
    msg = “Oi mundão enorme de grande!”
    return dict(mensagem=msg)

Definimos que nossa nova página vai ser a hello_world, pois essa é a nossa função. Dentro dela executamos todo o código que desejamos. No nosso caso, apenas associamos uma mensagem à variável msg. Depois, retornamos um dicionário com a nossa mensagem. A partir dos valores passados nesse dicionário, quando eu estiver editando o template dessa página, poderei acessar minha mensagem chamando pela chave do dicionário. Ou seja, sempre que eu utilizar a variável mensagem no template, estarei utilizando a mensagem que definimos.

A nova página criada pode ser acessada por:

http://localhost:8000/welcome/default/hello_world

No web2py, URLs são mapeadas da seguinte forma:

http://dominio.com/app/controller/function

Portanto, sempre que quisermos acessar uma página, devemos informar a aplicação em que ela se encontra, o controller e a função que define essa página.

Obs: Quando não houver nada para informar no dicionário, nenhuma variável a ser passada para o template, temos que retornar um dicionário vazio ( dict() ) para que a página possa ser renderizada.


Argumentos e Variáveis

Em uma URL, argumentos e variáveis são enviados para passar informações que podem ser utilizadas pela página.

Argumentos são mapeados da seguinte forma:

http://dominio.com/app/controller/function/arg1/arg2/arg3

Tudo aquilo separado por '/' após a chamada da página é um argumento.

Variáveis são mapeadas da seguinte forma:

http://dominio.com/app/controller/function?var1=valor1&var2=valor2

Variáveis são separadas da chamada da página pelo sinal '?' e associadas aos seus valores por '='. Além disso, uma sequência de mais de uma variável é concatenada por '&'.


Decorators

Decorators (decoradores) são definições para que a página indicada siga uma condição especificada. Os decorators mais comuns são de autenticação, por exemplo:

@auth.requires_login() def pagina_exemplo():

       #seu código aqui

O decorator requires_login() indica que, para acessar essa página, o usuário precisa estar logado.