python - with - introduction to django




Guida nell'organizzazione di grandi progetti Django (2)

Chiunque può raccomandare una buona guida / tutorial / articolo con suggerimenti / linee guida su come organizzare e partizionare un grande progetto Django?

Sto cercando consigli su cosa fare quando hai bisogno di iniziare a fattorizare i file univoci iniziali (models.py, urls.py, views.py) e lavorare con più di alcune dozzine di entità.


Ho trovato utile dare un'occhiata ai grandi progetti di Django open source e prendere 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 (sebbene la maggior parte di questi siano modelli di tag e middleware aggiuntivi più piccoli:

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

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

Alla fine, l'unico modo 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.


Ogni "applicazione" dovrebbe 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 dovrebbe 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, gli URL nominati devono avere una forma come "vista applicazione", quindi la funzione reverse o il tag {% url %} possono trovarli correttamente.

Ogni applicazione dovrebbe contenere i propri comandi batch (solitamente tramite un comando formale che può essere trovato dallo script django-admin .

Infine, tutto ciò che è più complesso di un semplice modello o di un modulo condiviso probabilmente non appartiene a nessuna delle due applicazioni, ma deve essere una libreria condivisa separata. Ad esempio, utilizziamo XLRD , ma includiamo parti di esso nella nostra classe, quindi è più simile al modulo csv incorporato. Questo wrapper per XLRD non è una parte adeguata di una qualsiasi applicazione, è un modulo separato, al di fuori delle applicazioni di Django.







projects