Estructura del proyecto para Google App Engine

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

Comencé una aplicación en Google App Engine justo cuando salió, para jugar con la tecnología y trabajar en un proyecto favorito en el que había estado pensando durante mucho tiempo pero que nunca había llegado a comenzar. El resultado es BowlSK. Sin embargo, a medida que ha crecido y se han agregado funciones, se ha vuelto muy difícil mantener las cosas organizadas, principalmente debido al hecho de que este es mi primer proyecto de python y no sabía nada al respecto hasta que comencé a trabajar.

Lo que tengo:

  • El nivel principal contiene:
    • todos los archivos .py (no sabía cómo hacer que los paquetes funcionaran)
    • todas las plantillas .html para páginas de nivel principal
  • Subdirectorios:
    • carpetas separadas para css, imágenes, js, etc.
    • carpetas que contienen plantillas .html para direcciones URL de tipo subdirectorio

Ejemplo:
http://www.bowlsk.com/ asigna a HomePage (paquete predeterminado), plantilla en "index.html"
http://www.bowlsk.com/games/view-series.html?series=7130 asigna a ViewSeriesPage (nuevamente, paquete predeterminado), plantilla en "games/view-series.html"

Es desagradable. ¿Cómo puedo ¿reestructurar? Tenía 2 ideas:

  • Carpeta principal que contiene: appdef, indexes, main.py?

    • Subcarpeta para el código. ¿Tiene que ser este mi primer paquete?
    • Subcarpeta para plantillas. La jerarquía de carpetas coincidiría con la jerarquía de paquetes
    • Subcarpetas individuales para css, imágenes, js, etc.
  • Carpeta principal que contiene appdef, indexes, main .py?

    • Subcarpeta para código + plantillas. De esta manera, tengo la clase de controlador justo al lado de la plantilla, porque en esta etapa, estoy agregando muchas características, por lo que las modificaciones a una significan modificaciones a la otra. De nuevo, ¿debo tener este nombre de carpeta como el primer paquete? nombre para mis clases? Me gustaría que la carpeta fuera "src", pero no quiero que mis clases sean "src.WhateverPage"

¿Hay alguna práctica recomendada? Con Django 1.0 en el horizonte, ¿hay algo que pueda hacer ahora para mejorar mi capacidad de integración con él cuando se convierta en el motor de plantillas oficial de GAE? Simplemente comenzaría a probar estas cosas y ver cuál parece mejor, pero el soporte de refactorización de pyDev no parece manejar muy bien los movimientos de paquetes, por lo que probablemente será una tarea no trivial hacer que todo esto vuelva a funcionar.