Ogni "applicazione" deve essere piccola - una singola entità riutilizzabile più alcune tabelle associate. Abbiamo circa 5 più/meno 2 tabelle per modello di applicazione. La maggior parte delle nostre dozzine di applicazioni sono più piccole di 5 tavoli. Uno ha zero tabelle nel modello.
Ogni applicazione deve essere progettata per essere un concetto riutilizzabile. Nel nostro caso, ogni applicazione è parte del sito generale; le applicazioni potrebbero essere rimosse e sostituite separatamente.
In effetti, questa è la nostra strategia. Man mano che i nostri requisiti si espandono e maturano, possiamo rimuovere e sostituire le applicazioni indipendentemente l'una dall'altra.
Va bene che le applicazioni dipendano l'una dall'altra. Tuttavia, la dipendenza deve essere limitata alle cose ovvie come "modelli" e "forme". Inoltre, le applicazioni possono dipendere dai nomi presenti negli URL degli altri. Di conseguenza, i tuoi URL nominati devono avere una forma come "vista applicazione" in modo che la funzione reverse
o il tag {% url %}
li trovi correttamente.
Ogni applicazione deve contenere è di possedere i comandi batch (di solito tramite un comando formale, che può essere trovato dallo script django-admin
.
Infine, tutto ciò che è più complesso di un semplice modello o un modulo che è condiviso probabilmente non appartiene ad entrambe le applicazioni, ma deve essere una libreria condivisa separata.Ad esempio, utilizziamo XLRD, ma ne includiamo alcune parti nella nostra classe, quindi è più simile al modulo integrato csv
. Questo wrapper per XLRD non è una parte appropriata di una qualsiasi applicazione, è un modulo separato, al di fuori delle applicazioni di Django.
fonte
2009-02-09 22:30:57
Concordato ... Le cose che ho imparato lavorando su pinax e satchmo sono inestimabili – Jiaaro