
Ποιος είναι ο καλύτερος τρόπος για να σχεδιάσει ένα μεγάλο έργο Django; Τα μαθήματα παρέχουν απλές οδηγίες για την εγκατάσταση εφαρμογών, τα μοντέλα και τις απόψεις, αλλά υπάρχουν λιγότερες πληροφορίες σχετικά με το πώς οι εφαρμογές και τα έργα θα πρέπει να αναλύονται, πόσο κοινή χρήση είναι επιτρεπτή / απαραίτητη μεταξύ των εφαρμογών σε ένα τυπικό έργο (προφανώς αυτό εξαρτάται σε μεγάλο βαθμό το έργο) και πώς / πού θα πρέπει να διατηρούνται γενικά πρότυπα.


Υπάρχει κάποιος που έχει παραδείγματα, προτάσεις και *εξηγήσεις* ως προς το γιατί μια συγκεκριμένη διάταξη του έργου είναι καλύτερο από το άλλο; Είμαι ιδιαίτερα ενδιαφέρονται για την ενσωμάτωση μεγάλου αριθμού των δοκιμών μονάδας (2-5x το μέγεθος της πραγματικής βάσης κώδικα) και την εξωτερική ανάθεση κορδόνι / πρότυπα.

 
σχεδιασμού του έργου διάταξης / FS για τα μεγάλα έργα Django
============================================================



Οι κύριες κατευθυντήριες γραμμές είναι παρόμοια με οποιοδήποτε άλλο μεγάλο έργο κώδικα. Οι εφαρμογές θα πρέπει να αντιμετωπίσει ένα ενιαίο, σαφώς καθορισμένες ευθύνες. Το όνομα «αίτηση» είναι ψευδεπίγραφος? Django εφαρμογές θα πρέπει να θεωρηθεί περισσότερο ως επαναχρησιμοποιήσιμα συστατικά τα οποία μπορεί να συνδεθεί μαζί για να δημιουργήσουν μια πραγματική εφαρμογή. Δοκιμές για κάθε εφαρμογή θα πρέπει να περιέχονται μέσα σε αυτό το app. Οι εφαρμογές θα πρέπει να αποσυνδεθεί από την άλλη όσο το δυνατόν περισσότερο, αλλά σαφώς θα υπάρχουν εξαρτήσεις, οπότε ο στόχος πρέπει να είναι να κρατήσει το γράφημα εξάρτησης τόσο απλό και λογικό όσο το δυνατόν.


Προτιμώ να κρατήσει όλα τα πρότυπα για ένα έργο σε ένα ενιαίο κατάλογο προτύπων έργων σε όλη την, με ένα υποκατάλογο για κάθε εφαρμογή (χρησιμοποιώντας ένα υποκατάλογο πρότυπο για κάθε εφαρμογή είναι μια πολύ ισχυρή σύμβαση στο Django, καθώς αποφεύγει τις συγκρούσεις όνομα του προτύπου μεταξύ των εφαρμογών) . Ο λόγος για ένα ενιαίο κατάλογο προτύπων έργων σε ολόκληρη είναι ότι τα πρότυπα, τα δέντρα πρότυπο κληρονομιά, και τα ονόματα μπλοκ μπορεί να είναι αρκετά συγκεκριμένο έργο, γι 'αυτό είναι δύσκολο να παρέχουν «default» πρότυπα app που μπορούν να συνδεθούν σε οποιοδήποτε έργο. Έχουν γίνει κάποιες προσπάθειες να εγκατασταθούν σε τυποποιημένες συμβάσεις ονομασίας για τα πρότυπα σε όλη την τοποθεσία βάσης και των τμημάτων για τα καθορίζουν, αλλά δεν έχω δει ένα πρότυπο βγει ακόμα (ο τρόπος που κάνουμε τα πράγματα πάνω σε [Pinax](http://pinaxproject.com) είναι ίσως το πιο κοντινό έχουμε σε ένα πρότυπο).


Re «εξωτερίκευση string», αν εννοείτε i18n και l10n, Django έχει ισχυρή υποστήριξη για το ότι και τα τυποποιημένα μέρη όπου βάζει τα αρχεία .po - ελέγξτε τα [έγγραφα](http://docs.djangoproject.com/en/dev/topics/i18n/#topics-i18n) .

 

Αυτή η σελίδα κάνει καλά τη δουλειά του την αντιμετώπιση ορισμένων από τις ερωτήσεις μου: <http://www.b-list.org/weblog/2006/sep/10/django-tips-laying-out-application/>


ΕΙΔΙΚΑ: 



> 
> 1. Για να ορίσετε ετικέτες πρότυπο έθιμο ή φίλτρα, θα πρέπει να δημιουργήσετε ένα υπο-κατάλογο στον κατάλογο που ονομάζεται templatetags της εφαρμογής, και πρέπει να περιέχει ένα αρχείο με το όνομα \_\_init\_\_.py έτσι ώστε να μπορεί να εισαχθεί ως μονάδα Python.
> 2. Για να ορίσετε τις δοκιμές μονάδα, η οποία θα αυτόματα να παρατηρήσει από πλαίσιο ελέγχου Django του, τα βάζουμε σε μια μονάδα που ονομάζεται τεστ (που μπορεί να είναι είτε ένα αρχείο με το όνομα tests.py ή ένα κατάλογο με το όνομα δοκιμές). Το πλαίσιο δοκιμών θα βρείτε επίσης τυχόν doctests στην εν λόγω μονάδα, αλλά η προτιμώμενη θέση για εκείνους που είναι, φυσικά, οι docstrings των κατηγοριών ή λειτουργίες έχουν σχεδιαστεί για τη δοκιμή.
> 3. Για την παροχή εξατομικευμένων SQL που θα εκτελεστεί αμέσως μετά την εγκατάσταση της εφαρμογής σας, να δημιουργήσετε ένα υπο-κατάλογο που ονομάζεται SQL μέσα στο κατάλογο της εφαρμογής? τα ονόματα των αρχείων θα πρέπει να είναι τα ίδια με τα ονόματα των μοντέλων της οποίας πίνακες αυτοί θα λειτουργούν? Για παράδειγμα, εάν έχετε μια εφαρμογή που ονομάζεται ιστολόγιο που περιέχει το όνομα μοντέλου εισόδου, τότε το αρχείο sql / entry.sql μέσα στο directory της εφαρμογής μπορεί να χρησιμοποιηθεί για να τροποποιήσει ή εισαγωγή δεδομένων σε πίνακα καταχωρήσεων από τη στιγμή που έχει δημιουργηθεί.
> 
> 
> 


Η σημείωση για tests.py και δοκιμές (ο κατάλογος) ισχύει επίσης για τα μοντέλα, η οποία βοηθά στην αντιμετώπιση του προβλήματος της ύπαρξης τρόπο σε πολλές δοκιμές (ή μοντέλα) για ένα αρχείο.


Θα ήθελα ακόμα να δούμε μερικά παραδείγματα / προτάσεις για την εφαρμογή / έργου καταρρεύσει, και μεγάλες περιοχές Django που λειτουργούν καλά.

 

Το [έργο Pinax](http://pinaxproject.com/) είναι χτισμένο γύρω από την ιδέα των μικρών επαναχρησιμοποιήσιμων εφαρμογές, οι οποίες μπορούν εύκολα να συγκεντρωθούν σε ένα έργο. Έχουν χρησιμοποιηθεί το πρόγραμμα [Cloud 27](http://cloud27.com/) ως ένα έργο επίδειξης.


Το έργο Django δουλεύω (που ονομάζεται Basie. Είναι προ-0,1, οπότε δεν υπάρχει σύνδεση ακόμα.) Προσπαθεί να ακολουθήσει το μοντέλο Pinax, και μέχρι στιγμής ότι λειτουργεί έξω αρκετά καλά.

 

τρέχουσα διάταξη μου προέρχεται από μένα θέλουν να έχουν μια δοκιμή-έκδοση από τις περιοχές μου. Αυτό σημαίνει ότι έχει δύο σχέδια για κάθε χώρο, δεδομένου ότι χρειάζονται διαφορετικές διαμορφώσεις, και με αναγκάζει να κινηθούν όλες τις εφαρμογές των έργων.


Έχω δημιουργήσει δύο φακέλους: $ APP\_ROOT / devel και $ APP\_ROOT / prod. Αυτά περιέχουν όλες τις εφαρμογές. Χρησιμοποιώντας τον έλεγχο πηγή (στην περίπτωση git μου) έχω τις εφαρμογές στο devel στην αναθεώρηση HEAD, ενώ οι εφαρμογές σε prod κλειδωμένο στην ετικέτα PROD. Τα πρότυπα έχουν επίσης το δικό τους φάκελο με την ίδια διάταξη, όπως τις εφαρμογές.


Τώρα είμαι σε θέση να κάνει όλα εξέλιξη μου στο φάκελο devel-εφαρμογές και την αντίστοιχη πρότυπο-φάκελο. Όταν έχω κάτι είμαι ευχαριστημένος με, έχω μια ετικέτα η αναθεώρηση και ενημέρωση prod.

 

Βρήκα διάταξη Zachary είναι αρκετά χρήσιμο
 [Blog »συμβάσεις Django έργου Zachary Voase του, Revisited.](http://zacharyvoase.com/2010/02/03/django-project-conventions/) 

 

Μου αρέσει πολύ [Randall Degges'](http://www.deploydjango.com/django_project_structure/index.html) θέση σε αυτό το θέμα. Φεύγει από πληροφορίες σχετικά με το πώς να κολλήσετε τις ρυθμίσεις αρχεία μαζί, αλλά θα έχουν μια θέση σε αυτό θα είμαι σε θέση να συνδέσει, αλλά προς το παρόν ο καθένας μπορεί να ελέγξει έξω [repo μου](https://github.com/ahammouda3/personal-page) , όπου έχω συμπεριλάβει κάποια κατεύθυνση στην readme.

 