Iniciei um aplicativo no Google App Engine logo após o lançamento, para brincar com a tecnologia e trabalhar em um projeto que eu pensava há muito tempo, mas que nunca tinha começado. O resultado é BowlSK . No entanto, à medida que cresce, e os recursos são adicionados, ficou realmente difícil manter as coisas organizadas - principalmente devido ao fato de este ser meu primeiro projeto python, e eu não sabia nada sobre isso até começar a trabalhar.
O que eu tenho:
- O nível principal contém:
- todos os arquivos .py (não sabia como fazer os pacotes funcionarem)
- todos os modelos .html para páginas de nível principal
- Subdiretórios:
- pastas separadas para css, imagens, js, etc.
- pastas que contêm modelos .html para URLs do tipo subdiretório
Exemplo:
http://www.bowlsk.com/ mapeia para a HomePage (pacote padrão), modelo em "index.html"
http://www.bowlsk.com/games/view-series.html?series=7130 mapeia para ViewSeriesPage (novamente, pacote padrão), modelo em "games / view-series.html"
É desagradável. Como faço para reestruturar? Eu tive 2 idéias:
Pasta principal que contém: appdef, indexes, main.py?
- Subpasta para código. Esse tem que ser meu primeiro pacote?
- Subpasta para modelos. A hierarquia de pastas corresponderia à hierarquia de pacotes
- Subpastas individuais para css, imagens, js etc.
Pasta principal contendo appdef, índices, main.py?
- Subpasta para código + modelos. Dessa forma, tenho a classe manipuladora ao lado do modelo, porque, nesta fase, estou adicionando muitos recursos, portanto, modificações em uma significam modificações na outra. Novamente, preciso que esse nome de pasta seja o primeiro nome de pacote para minhas aulas? Gostaria que a pasta fosse "src", mas não quero que minhas classes sejam "src.WhateverPage"
Existe uma prática recomendada? Com o Django 1.0 no horizonte, há algo que eu possa fazer agora para melhorar minha capacidade de integração com ele quando ele se tornar o mecanismo oficial de modelos do GAE? Eu simplesmente começaria a tentar essas coisas e a ver o que parece melhor, mas o suporte à refatoração do pyDev não parece lidar muito bem com as movimentações de pacotes, portanto, provavelmente será uma tarefa não trivial fazer com que tudo isso funcione novamente.
fonte
Meu layout usual é mais ou menos assim:
__init__.py
- funcionalidade comum, incluindo uma classe base do manipulador de solicitaçõesPosso fornecer exemplos de como serão meus controladores app.yaml, request.py, lib / init .py e amostra, se isso não estiver claro.
fonte
Implementei hoje um boilerplate do mecanismo de aplicativos do Google e o verifiquei no github. Isso segue as linhas descritas por Nick Johnson acima (que costumava trabalhar no Google).
Siga este link gae-boilerplate
fonte
Eu acho que a primeira opção é considerada a melhor prática. E torne a pasta de código seu primeiro pacote. O projeto Rietveld desenvolvido por Guido van Rossum é um modelo muito bom para aprender. Dê uma olhada: http://code.google.com/p/rietveld
Com relação ao Django 1.0, sugiro que você comece a usar o código de tronco do Django em vez da porta do GAE incorporada no django. Mais uma vez, veja como é feito em Rietveld.
fonte
Eu gosto do webpy, então o adotei como estrutura de modelos no Google App Engine.
Minhas pastas de pacotes são normalmente organizadas assim:
Aqui está um exemplo.
fonte
Não estou totalmente atualizado sobre as melhores práticas mais recentes, etc. no que diz respeito ao layout de código, mas quando fiz meu primeiro aplicativo GAE, usei algo na sua segunda opção, onde o código e os modelos estão próximos um do outro.
Havia duas razões para isso - uma: ela mantinha o código e o modelo por perto e, em segundo lugar, eu tinha o layout da estrutura de diretórios imitando o do site - tornando-o (para mim) um pouco mais fácil também para lembrar onde estava tudo.
fonte