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.