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 llegué a comenzar. El resultado es BowlSK . Sin embargo, a medida que ha crecido y se han agregado funciones, se ha vuelto realmente 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 URL de tipo subdirección
Ejemplo:
http://www.bowlsk.com/ se asigna a HomePage (paquete predeterminado), plantilla en "index.html"
http://www.bowlsk.com/games/view-series.html?series=7130 se asigna a ViewSeriesPage (nuevamente, paquete predeterminado), plantilla en "games / view-series.html"
Es desagradable. ¿Cómo reestructuro? Tenía 2 ideas:
Carpeta principal que contiene: appdef, indexes, main.py?
- Subcarpeta para 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. Nuevamente, ¿tengo que hacer que este nombre de carpeta sea el primer nombre de paquete para mis clases? Me gustaría que la carpeta fuera "src", pero no quiero que mis clases sean "src.WhateverPage"
¿Existe una buena práctica? Con Django 1.0 en el horizonte, ¿hay algo que pueda hacer ahora para mejorar mi capacidad para integrarme con él cuando se convierta en el motor de plantillas oficial de GAE? Simplemente comenzaría a probar estas cosas y vería 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 funcione nuevamente.