Chaque "application" doit être petite - une seule entité réutilisable et quelques tables associées. Nous avons environ 5 plus ou moins 2 tables par modèle d'application. La plupart de notre demi-douzaine d'applications sont plus petites que 5 tables. L'une d'entre elles n'a aucune table dans son modèle.
Chaque application doit être conçue pour être un concept réutilisable. Dans notre cas, chaque application est un élément du site global ; les applications peuvent être retirées et remplacées séparément.
En effet, c'est notre stratégie. Au fur et à mesure que nos besoins se développent et mûrissent, nous pouvons supprimer et remplacer les applications indépendamment les unes des autres.
Il est acceptable que les applications dépendent les unes des autres. Cependant, la dépendance doit être limitée aux éléments évidents comme les "modèles" et les "formulaires". En outre, les applications peuvent dépendre des noms figurant dans les URL des autres applications. Par conséquent, vos URL nommées doivent avoir une forme telle que "application-view", de sorte que la balise reverse
ou la fonction {% url %}
l'étiquette peut les trouver correctement.
Chaque application doit contenir ses propres commandes batch (généralement via une commande formelle qui peut être trouvée par la commande django-admin
script.
Enfin, tout ce qui est plus complexe qu'un simple modèle ou formulaire partagé n'appartient probablement pas à l'une ou l'autre des applications, mais doit faire l'objet d'une bibliothèque partagée distincte. Par exemple, nous utilisons XLRD mais en enveloppant certaines parties dans notre propre classe pour qu'elle ressemble davantage à la classe intégrée de l'entreprise. csv
module. Ce wrapper pour XLRD ne fait pas partie intégrante d'une application, c'est un module séparé, en dehors des applications Django.