Struttura del progetto per Google App Engine

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

Ho avviato un'applicazione in Google App Engine proprio quando è uscita, per giocare con la tecnologia e lavorare su un progetto che avevo in mente da molto tempo ma che non sono mai riuscito a iniziare. Il risultato è BowlSK. Tuttavia, man mano che è cresciuto e sono state aggiunte funzionalità, è diventato davvero difficile mantenere le cose organizzate, principalmente a causa del fatto che questo è il mio primo progetto Python e non ne sapevo nulla fino a quando non ho iniziato a lavorare.

Quello che ho:

  • Il livello principale contiene:
    • tutti i file .py (non sapevo come far funzionare i pacchetti)
    • tutti i modelli .html per le pagine di livello principale
  • Sottodirectory:
    • cartelle separate per css, immagini, js, ecc.
    • cartelle che contengono modelli .html per URL di tipo sottodirecty

Esempio:
http://www.bowlsk.com/ esegue il mapping alla HomePage (pacchetto predefinito), modello in "index.html"
http://www.bowlsk.com/games/view-series.html?series=7130 esegue il mapping a ViewSeriesPage (di nuovo, pacchetto predefinito), modello su "games/view-series.html"

È brutto. Come faccio a ristrutturare? Avevo 2 idee:

  • Cartella principale contenente: appdef, indexes, main.py?

    • Sottocartella per il codice. Questo deve essere il mio primo pacchetto?
    • Sottocartella per i modelli. La gerarchia delle cartelle corrisponderebbe alla gerarchia dei pacchetti
    • Sottocartelle individuali per css, immagini, js, ecc.
  • Cartella principale contenente appdef, index, main .py?

    • Sottocartella per codice + modelli. In questo modo ho la classe del gestore proprio accanto al modello, perché in questa fase aggiungo molte funzionalità, quindi le modifiche a una significano modifiche all'altra. Ancora una volta, devo avere questo nome di cartella come primo pacchetto nome per le mie classi? Vorrei che la cartella fosse "src", ma non voglio che le mie classi fossero "src.WhateverPage"

C'è una migliore pratica? Con Django 1.0 all'orizzonte, c'è qualcosa che posso fare ora per migliorare la mia capacità di integrarmi con esso quando diventerà il motore di modelli GAE ufficiale? Vorrei semplicemente iniziare a provare queste cose e vedere cosa sembra meglio, ma il supporto per il refactoring di pyDev non sembra gestire molto bene gli spostamenti dei pacchetti, quindi sarà probabilmente un compito non banale far funzionare di nuovo tutto questo.