Passo-a-Passo web2py, 1º Passo

Este artigo será o primeiro de vários outros que servirão como guia para adentrar no universo do web2py, um dos frameworks Python para desenvolvimento web. Meu objetivo é ajudar vocês, padawans, a iniciarem com o pé direito no desenvolvimento web e a percorrerem todo o processo de desenvolvimento de uma aplicação web usando o framework. Prontos?

Segue o índice para que você acompanhe também os outros passos:

 

 

O que vamos fazer?

A ideia é simples e clichê: um controle de estoques. Para isso, vamos criar uma locadora de filmes e fazer o controle da loja. A ideia é que o site fique simples, mas que você consiga entender todo o desenvolvimento dele, das configurações mais básicas até o deploy.

Aplicações construídas com web2py seguem as mesmas regras, então o objetivo é que você termine este tutorial com a aplicação da sua locadora pronta, mas sabendo construir qualquer app depois.

O que eu preciso para começar?

Bom, antes de tudo, é claro, você precisa saber pelo menos o básico da linguagem Python (se acha que não sabe o suficiente, clique aqui) e ter uma versão 2.6 ou 2.7da linguagem instalada no seu computador. Também tenho que pedir que saiba o básico do básico de HTML, CSS e JS; você não vai perder seu projeto se não souber nada desses três, mas já que você pretende desenvolver para web, seria legal conhecer pelo menos um pouco dessas tecnologias.

Além disso, seria legal se você já tivesse uma noção sobre o framework e o que ele pretende, mas se não for esse o caso, transcrevo aqui palavras contidas na documentação:

web2py é um framework web gratuito e open-source criado para desenvolvimento ágil de aplicações web baseadas em banco de dados seguros; ele é escrito em Python e programável em Python. web2py é um framework full-stack, o que significa que ele contém todos os componentes que você precisa para construir aplicações web completamente funcionais.

web2py foi desenvolvido para guiar um desenvolvedor web para seguir boas práticas de engenharia de software, como usar o padrão Model View Controller (MVC). web2py separa a representação de dados (o model) da apresentação de dados (a view) e também da lógica e do fluxo da aplicação (o controller). web2py providencia bibliotecas para ajudar o desenvolvedor a criar, implementar e testar cada uma das três partes separadamente, e faz elas trabalharem juntas.

Agora, basta ter disposição para dar o primeiro passo!

Download e “Instalação”

Para fazer o download do framework, acesse a página do framework (www.web2py.com) e vá para a aba de Download ou apenas clique aqui.

Você terá três opções, vamos entender cada uma delas, da última para a primeira:

Opções de download do web2py

Opções de download do web2py

For Developers

Para aqueles que contribuem com o desenvolvimento do web2py. Por ser a versão de desenvolvimento, é a menos estável, o que quer dizer que a probabilidade de você encontrar bugs no core do framework, nessa versão, é muito maior.

Caso você queira contribuir com o framework, você pode pegar o código fonte no repositório do GitHub indicado lá.

For Testers

Para aqueles que se dedicam ao teste do framework. Ou seja, quando uma nova funcionalidade é finalizada na versão de Developers, entram os Testers e estes vão testar o core do framework, o código-fonte. O dever deles é, basicamente, encontrar e reportar bugs.

Caso você queira ser um tester, pode pegar qualquer uma das versões do web2py para essa finalidade (Windows, Mac ou Source Code).

For Normal Users

Para aqueles que são meros mortais como nós e desejam usar a versão mais estável do framework, ou seja, queremos utilizar o framework apenas para produzir nosso próprio conteúdo e com o mínimo possível de bugs. Essa opção oferece três versões: para Windows, Mac e Source Code.

Independente do sistema operacional que você utiliza, recomendo baixar sempre o Source Code. O que você deve fazer é o seguinte:

1. Baixar o Source Code para Normal Users;

2. Descompactar o arquivo baixado onde desejar;

3. A pasta descompactada deverá ter um arquivo web2py.py dentro dela. Sempre que quiser iniciar o web2py, basta executar esse arquivo.

É importante ressaltar um detalhe sobre o versionamento do web2py: independente da versão, ele tenta sempre manter a compatibilidade com as versões anteriores. Neste tutorial, irei utilizar a versão 2.10.4. Isto quer dizer que, caso eu rode uma aplicação construída na versão 2.0.0, ela deve funcionar sem (ou quase sem) problemas. Portanto, fique tranquilo quanto à versão que você irá utilizar.

Bom, então executamos o script Python do web2py, e o que acontece agora? Uma janela irá se abrir te pedindo o IP do servidor, a porta e uma senha. Por que isso?

Janela inicial do web2py

Janela inicial do web2py

O web2py vem com um servidor web embutido, o que permite que sua aplicação possa ser executada no seu computador e, assim, você consiga visualizar o framework e suas aplicações rodando no seu browser. Dessa forma, quando ele pergunta o IP e a porta do servidor, você deve falar o endereço onde esse servidor irá rodar para que seja capaz de acessá-lo.

Por exemplo, se você escolher o servidor local e a porta 8000 (que são os valores padrões), você deve ser capaz de ver suas aplicações rodando em http://localhost:8000 (ou http://127.0.0.1:8000, que é a mesma coisa). A não ser que deseje alterar realmente esses valores, pode deixá-los no padrão durante todo o desenvolvimento.

Além disso, o web2py possui uma interface administrativa que te permite controlar suas aplicações existentes, editá-las e realizar muitas outras ações que iremos ver adiante. Por isso, ele também pede uma senha. A senha será utilizada para logar nessa interface. No caso, como você está rodando em localhost, pode definir uma senha pouco segura apenas para ter um acesso mais rápido, visto que terá que definir a senha toda vez que executar o web2py. Eu recomendo algo como 1234, bem rápido.

Tudo definido, podemos executar o web2py clicando em start server e acessá-lo no endereço http://localhost:8000.

Para aqueles que, como eu, gostam de usar o Terminal (ou Linha de Comando), o web2py também pode ser executado dessa maneira. Basta acessar a pasta que você descompactou e rodar o script Python:

$ cd web2py
$ python web2py.py

E tudo será da mesma forma. Além disso, para aqueles que não querem essa janela do web2py abrindo em toda execução, podemos suprimi-la executando o web2py com o comando:

$ python web2py.py -a <sua_senha>

Agora, você pode acessar o web2py no endereço do localhost sem que nenhuma janela extra seja aberta.

Welcome

Aplicação Welcome, o

Aplicação Welcome, o “Hello World!” do web2py

Assim que executamos o web2py e acessamos o localhost pelo browser, podemos ver uma tela padrão escrita Welcome to web2py! com algumas informações sobre o web2py. Essa tela nada mais é do que uma aplicação que vem instalada no framework, que serve como base e exemplo para futuras aplicações que você irá construir. Em linguagem de programador, a aplicação Welcome é um Hello World do web2py.

Vista essa aplicação, você pode ter certeza de que deu tudo certo. Você não precisa configurar mais nada do ambiente do web2py, pois ele já vem com tudo preparado para que você não tenha que mexer em nada, apenas fazer o download e já começar a utilizá-lo.

MVC para entender

O modelo MVC (Model-View-Controller) é um padrão de organização de aplicações. Assim, ficarão separados os models, que são as representações de dados; as views, que são as apresentações dos dados; e os controllers, que são as funções e interações que a aplicação irá realizar.

O modelo MVC

Models

Nos models são guardadas informações de bancos de dados, além de criadas e validadas suas tabelas. A partir disso, poderemos gravar e armazenar dados da aplicação e interagir com eles: resgatar, editar, deletar, etc.

No web2py, os models também são sempre os primeiros arquivos a serem lidos, em ordem alfabética. Ou seja, se eu tenho um arquivo db.py e um model.py, as informações do arquivo db.py serão lidas e interpretadas antes de model.py. Portanto, se alguma informação presente em db.py depender de algo em model.py, ocorrerá um erro!

Além disso, tudo o que for definido em um model poderá ser acessado em todas as partes da aplicação. Ou seja, as variáveis definidas em model serão globais para a sua aplicação, assim como os imports.

Controllers

Nos controllers são definidas as funções da aplicação que farão com que ela funcione da forma como designada. São nos controllers que poderemos fazer com que a aplicação interaja com o banco de dados e envie informações para o usuário, ou seja, neles construiremos toda a lógica da aplicação.

No web2py, cada função sem parâmetros no controller é mapeada para uma URL, ou seja, cada função define uma diferente página da sua aplicação. Essas páginas são chamadas de actions para indicar que são diferentes de uma função comum.

Caso você passe parâmetros para uma função no controller, ela deixa de ser mapeada como uma página e passa a ser uma função Python comum, que poderá ser chamada no código. Isso é especialmente feito em models, pois assim a função será acessível em todas as camadas de código.

Views

As views definem o que a aplicação vai exibir para o usuário e a forma como isso se dará. No web2py, views geralmente são arquivos HTML que podem receber código Python. O código Python em um view deve estar dentro dos delimitadores {{ }} para ser executado.

Views podem herdar ou incluir outras views. Isto é, você pode fazer com que uma view contenha outra, exibindo ambas em conjunto.

De volta à Welcome

Agora sim podemos entender melhor o que a aplicação Welcome nos dizia:

Você acessou a página index, o que chamou uma action index() no controller default.py e que retornou um dicionário com algumas informações que foram adicionadas ao HTML da página.

Ou seja, acessamos uma função de um controller e esse controller passou informações à nossa view. Mas como entender a forma como esses arquivos são organizados?

A (super) interface administrativa

A interface administrativa do web2py

O web2py traz uma interface administrativa gráfica que te permite ver suas aplicações, entre várias outras coisas que não são nosso foco agora. Então, vamos direto acessá-la: http://localhost:8000/admin

Para acessar o admin, será pedida uma senha. Essa senha é aquela que você definiu quando executou o web2py.

Feito o login, uma tela listando as aplicações existentes será exibida. Como queremos explorar a aplicação Welcome, podemos seguir direto para ela. Clique no botão Manage associado à aplicação Welcome e selecione Edit.

Agora você pode ver toda a estrutura da aplicação Welcome. Repare que os primeiros arquivos são os models, seguidos pelos controllers e depois view. Mais adiante existem vários outros diretórios, mas vamos focar nos três primeiros.

Modo de edição da aplicação Welcome

Modo de edição da aplicação Welcome

Caso tenha curiosidade de abrir o model db.py, verá que ele traz configurações gerais da aplicação, como a conexão ao banco de dados, a API de autenticação, configurações de e-mail, etc. Além disso, o controller default.py exibirá para você suas páginas, que incluem a index, páginas de autenticação do usuário e páginas de download. Por fim, temos views definidas dentro da pasta default, ou seja, associadas ao controller default como veremos adiante.

Se você quiser, pode alterar qualquer um desses arquivos a partir da própria interface administrativa. Note que cada arquivo tem um botão de Edit ao lado do nome, o que abre uma IDE simples do web2py para realizar edições naquele arquivo.

As outras pastas da aplicação são:

  1. Languages, que contém arquivos para realizar tradução do que você irá definir que deve ser traduzido;
  2. Static, que contém os arquivos estáticos utilizados em layouts;
  3. Modules, que contém os módulos externos do web2py que você trouxe para o projeto;
  4. Privates, que contém arquivos de configuração;
  5. Plugins, que contém plugins web2py utilizados no projeto.

Sua primeira aplicação

Entendido tudo isso, podemos voltar para a página inicial da interface administrativa. Iremos seguir o passo mais fácil agora para criar uma nova aplicação:

1. Na área de New simple application da página inicial da interface administrativa, inserir o nome do app.
2. Clicar em Create.

Criando uma nova aplicação no web2py

Criando uma nova aplicação no web2py

Uma nova aplicação será criada com o nome informado. Se você for na área de edição dessa aplicação irá notar que ela é exatamente igual à aplicação Welcome. Isso acontece porque o web2py utiliza o modelo da aplicação Welcome como base para qualquer nova aplicação sua, que já traz diversas pré-configurações prontas. Assim, ele clona a aplicação Welcome alterando seu nome.

Caso você acesse http://localhost:8000/nome_da_sua_app, irá ver novamente a tela da aplicação Welcome, embora agora você esteja acessando sua aplicação novinha.

Conclusão

Como o 1º passo do web2py, conseguimos fazer o download, executamos o framework e já caímos direto no Hello World que ele fornece!

Além disso, conseguimos entender o modelo MVC e como o web2py aplica ele, incluindo detalhes bem específicos como a característica de sempre executar os models primeiro e ter suas variáveis disponíveis de forma global na aplicação.

Por fim, aprendemos a utilizar o básico necessário da interface administrativa e criamos nossa primeira aplicação, que é um clone da Welcome. Agora estamos prontos para começar a desenvolver nossa aplicação da locadora!

33 comentários sobre “Passo-a-Passo web2py, 1º Passo

  1. Sidney disse:

    Ihhh… eu cliquei no web2py.py e abre um terminal e logo fecha e não aparece mais nada.

    Uso windows 7 64 e aqui a gente usa um servidor ( será que é isso ??)

    Curtir

  2. JOEL ANDRADE disse:

    OLA JULIA,

    SOU INICIANTE EM WEB2PY E ESTÁ OCORRENDO UM ERRO QUANDO VOU EDITAR MINHA APLICAÇÃO NO MODEL.DB.PY, TRAVA E APARECE UMA SENHA DO ADMINISTRADOR QUE COLOQUEI NO INICIO E TRAVA TUDO. O QUE ESTÁ OCORRENDO SER?

    JOEL ANDRADE

    Curtir

    • Júlia Rizza disse:

      Rapaz, provavelmente algo que você modificou no db.py gerou um erro. Quando acontecem erros em um model, toda a aplicação para e te redireciona ao ticket de erro. Ao acessar esse ticket de erro, será solicitada sua senha de administrador. Basta informá-la e será exibido o erro que está ocorrendo, aí é só saber onde ele está e corrigir 🙂

      Curtido por 1 pessoa

  3. raymundojunior disse:

    Olá Júlia… Em primeiro lugar: Parabéns… está muito bom!

    Em segundo: Ao rodar:
    ~/locadora$ python web2py/web2py.py -i localhost -a 123

    ou

    ~/locadora$ python web2py/web2py.py -i localhost -a 8000

    ou

    ~/locadora$ python web2py/web2py.py

    acontece o seguinte erro:

    Traceback (most recent call last):
    File “web2py/web2py.py”, line 21, in
    import gluon.widget
    File “/home/redjr/locadora/web2py/gluon/__init__.py”, line 32, in
    from globals import current
    ImportError: No module named ‘globals’

    Encontrei a opção de utilizar a ação: ~/locadora$ pip install globals
    Que resultou em:
    Could not find a version that satisfies the requirement globals (from versions: )
    No matching distribution found for globals

    Ou seja, sem sucesso…. Fico no aguardo… Abraço!

    Curtir

    • Júlia Rizza disse:

      Olá Raymundo,

      Por favor, verifique a versão do Python que você está utilizando, pois o web2py precisa de uma versão entre a 2.5 e a 2.7. Além disso, teste instalar o web2py pelo Source Code caso esteja utilizando outro tipo de instalação. Caso o problema continue ocorrendo, me avise.

      Obs: a opção “-a” é para indicar uma senha de administrador, não a porta que você deseja utilizar.

      Curtido por 1 pessoa

  4. raymundojunior disse:

    Olá, Júlia… então, errei ao escrever -a 8000, corrigi depois… enfim

    Seguindo o que você falou, realmente, falta de atenção ao criar a pasta, então…

    Dentro da pasta do projeto: (web2py_projetos) usuario:~$ virtualenv locadora -p python2.7
    O que possibilitou a criação do projeto utilizando python2.7 e, dessa forma, foi possível a ação:

    (web2py_projetos) usuario:~/locadora$ python2.7 web2py/web2py.py.

    Tornando também possível o acesso ao 127.0.0.1:8000 com a página inicial, ‘ Aplicação Welcome, o “Hello World!” do web2py ‘.

    Bom, muito obrigado pela atenção… Aquele abraço, Júlia… Mais uma vez, PARABÉNS… keep going!

    Curtir

  5. Diógenes Roberto disse:

    Ola Júlia,
    Primeiro quero te parabenizar pela iniciativa em partilhar teus conhecimentos. Sou programador desde a década de 80 e já passei por muitas linguagens, desde o primordial assembler, C, delphi pascal, java, e muitas outras as quais tenho trabalho prontos, mas você apesar de jovem tem muita bagagem como programadora e como educadora. Continue neste caminho que muitos grandes projetos te espera. Ah! já ia esquecendo de elogiar este teu sorriso bonito. 😀

    Curtir

  6. Alisson disse:

    Boa tarde Juliana, comecei a estudar python, faz algum tempo. E queria desenvolver alguma coisa para web. Em pesquisa na Google. Ele me levou aqui. E essa sua documentação é muito boa. Estou seguindo os passos. Muito obrigado por compartilhar seu conhecimento. Espero que continue com esse ótimo projeto. Depois indica livro ou mais forma de aprender o web2py.

    Curtido por 1 pessoa

  7. ODAIR AZEVEDO ROSA disse:

    Bom dia, fiquei interessado nessa material e vou me dedicar a ele (estudar muito), estou muito travado ainda por falta de explicações que percebi que você passa nestes seus cursos. muito obrigado Julia, você está de parabéns.

    Curtir

Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.