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.
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 (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.