J'ai cherché sur Google pour cela, mais j'ai encore du mal à comprendre ce que Django définit comme des «applications».
Dois-je créer une nouvelle application pour chaque élément de fonctionnalité d'un site, même si elle utilise des modèles du projet principal?
Avez-vous une bonne règle de base pour savoir quand séparer une nouvelle application et quand conserver les fonctionnalités avec le «projet principal» ou d'autres applications?
Je préfère considérer les applications Django comme des modules ou des composants réutilisables plutôt que comme des "applications".
Cela m'aide à encapsuler et à découpler certaines fonctionnalités les unes des autres, améliorant la réutilisation si je décide de partager une "application" particulière avec la communauté dans son ensemble, et la maintenabilité.
Mon approche générale consiste à regrouper des fonctionnalités spécifiques ou des ensembles de fonctionnalités dans des «applications» comme si j'allais les publier publiquement. Le plus difficile ici est de déterminer la taille de chaque seau.
Une bonne astuce que j'utilise est d'imaginer comment mes applications seraient utilisées si elles étaient publiées publiquement. Cela m'encourage souvent à rétrécir les seaux et à définir plus clairement son «objectif».
la source
Voici la présentation mise à jour du 6 septembre 2008.
DjangoCon 2008: applications réutilisables à 7:53
Diapositive: Reusable_apps.pdf
la source
J'ai tendance à créer de nouvelles applications pour chaque ensemble de modèles logiquement séparés. par exemple:
la source
La règle que je suis est qu'il doit s'agir d'une nouvelle application si je souhaite réutiliser la fonctionnalité dans un autre projet.
S'il nécessite une compréhension approfondie des modèles de votre projet, il est probablement plus cohérent de le coller aux modèles.
la source
Les deux meilleures réponses à cette question que j'ai trouvées sur le Web sont:
Les deux sources conviennent que vous devez créer une application distincte dans les situations suivantes:
la source
Une `` application '' peut être beaucoup de choses différentes, tout dépend vraiment du goût. Par exemple, disons que vous créez un blog. Votre application peut être le blog entier, ou vous pouvez avoir une application "admin", une application "site" pour toutes les vues publiques, une application "rss", une application "services" afin que les développeurs puissent s'interfacer avec le blog dans leur ses propres manières, etc.
Personnellement, je ferais du blog lui-même l'application et j'expliquerais les fonctionnalités qu'il contient. Le blog pourrait alors être réutilisé assez facilement dans d'autres sites Web.
L'avantage de Django est qu'il reconnaîtra n'importe quel fichier models.py dans n'importe quel niveau de votre arborescence de répertoires comme un fichier contenant des modèles Django. Donc, diviser vos fonctionnalités en `` sous-applications '' plus petites au sein d'une `` application '' elle-même ne rendra rien plus difficile.
la source