2009-02-09 20 views
31

Chiunque può consigliare una buona guida/tutorial/articolo con suggerimenti/linee guida su come organizzare e partizionare un grande progetto Django?Guida nell'organizzazione di grandi progetti Django

Sono in cerca di consigli su cosa fare quando è necessario iniziare a fattorizare i file univoci iniziali (models.py, urls.py, views.py) e lavorare con più di alcune dozzine di entità.

risposta

38

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.

10

Ho trovato utile dare un'occhiata a grandi progetti Django open source e prendi nota di come questo progetto lo fa. Il sito di Django ha una buona lista di progetti open-source:

http://code.djangoproject.com/wiki/DjangoResources#Open-SourceDjangoprojects

Come fa Google (anche se la maggior parte di questi sono piccoli add-in tag di template e Middleware:

http://code.google.com/hosting/search?q=label:django

Naturalmente , solo perché un progetto lo fa in un modo non significa che quel modo sia The Right Way (o The Wrong Way). Alcuni di questi progetti hanno più successo di altri

Alla fine, la o il modo migliore per imparare veramente ciò che funziona e non funziona è provarlo tu stesso. Tutti i suggerimenti e i suggerimenti del mondo non ti aiuteranno a meno che tu non provi te stesso, ma potrebbero aiutarti a iniziare nella giusta direzione.

+0

Concordato ... Le cose che ho imparato lavorando su pinax e satchmo sono inestimabili – Jiaaro

Problemi correlati