Stratégie d'application Django


14

Je travaille depuis un certain temps sur un projet Django qui s'est développé un peu récemment. J'ai réfléchi un peu à la stratégie à utiliser pour la rendre plus facile à gérer. Une chose sur laquelle j'aimerais obtenir des commentaires serait de diviser mon application en plusieurs applications plus petites. Cela réduirait ma vue et mes fichiers de modèles et séparerait certaines des préoccupations.

Une chose qui me dérange avec cela est que dans mes applications, j'aurais plusieurs méthodes d'assistance qui seront utilisées dans toutes les applications. Certains modèles devront également être partagés / utilisés entre les applications. Serait-ce logique? Cela ne va pas bien avec la séparation des préoccupations que j'espérais atteindre en divisant mon application en plusieurs applications plus petites. Quelle serait une bonne approche pour partager des méthodes d'assistance, des modèles, etc. entre les applications?

Réponses:


11

Si votre projet prend de l'ampleur, considérez les applications comme des modules réutilisables. Vous pouvez séparer les fonctionnalités partagées entre vos applications dans sa propre application.

Voir les discussions ci-dessous pour plus de réflexions sur la question:


Que faire si une application doit ajouter des éléments de menu à la navigation du projet? stackoverflow.com/questions/23405610
utapyngo

2

J'aime créer une base/application sans vues et sans moments pour partager des trucs.

Un problème qui peut se produire lorsque vous avez des modèles répartis sur plusieurs applications est les importations circulaires. Cela peut être évité en utilisant des chaînes pour faire référence à d'autres modèles ( foo = ForeignKey("someapp.Foo")au lieu de foo = ForeignKey(someapp.models.Foo)). Django vous permet d'utiliser des chaînes comme celle-ci à plusieurs endroits.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.