Estrutura do projeto para o Google App Engine

| | | | | | | | | | | | | | | | | | | |

Comecei um aplicativo no Google App Engine assim que ele foi lançado, para brincar com a tecnologia e trabalhar em um projeto de estimação que eu vinha pensando há muito tempo, mas nunca tive tempo de começar. O resultado é BowlSK. No entanto, à medida que cresceu e recursos foram adicionados, ficou muito difícil manter as coisas organizadas - principalmente devido ao fato de que este é meu primeiro projeto python, e eu não sabia nada sobre isso até começar a trabalhar.

O que eu tenho:

  • 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 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), template em "games/view-series.html"

É desagradável. reestruturar? Eu tive 2 ideias:

  • Pasta principal contendo: appdef, índices, main.py?

    • Subpasta para código. Este tem que ser meu primeiro pacote?
    • Subpasta para templates. 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. Desta forma eu tenho a classe handler bem ao lado do template, porque neste estágio, eu estou adicionando muitos recursos, então modificações em um significam modificações no outro. Novamente, eu tenho que ter este nome de pasta como o primeiro pacote nome para minhas classes? Eu 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 de modelagem oficial do GAE? Eu simplesmente começaria a tentar essas coisas e ver o que parece melhor, mas o suporte à refatoração do pyDev não parece lidar muito bem com movimentações de pacotes, então provavelmente será uma tarefa não trivial fazer tudo isso funcionar novamente.