Przeszukałem to w Google, ale nadal mam problem z tym, co Django definiuje jako „aplikacje”.
Czy powinienem utworzyć nową aplikację dla każdej funkcji w witrynie, mimo że korzysta ona z modeli z głównego projektu?
Czy macie dobrą regułę, kiedy oddzielić nową aplikację, a kiedy zachować funkcjonalność razem z „głównym projektem” lub innymi aplikacjami?
Wolę myśleć o aplikacjach Django jako o modułach lub komponentach wielokrotnego użytku niż o „aplikacjach”.
Pomaga mi to w hermetyzowaniu i oddzielaniu pewnych funkcji od siebie, poprawiając możliwość ponownego użycia, jeśli zdecyduję się udostępnić określoną „aplikację” całej społeczności, oraz łatwość konserwacji.
Moje ogólne podejście polega na podzieleniu określonych funkcji lub zestawów funkcji na „aplikacje”, tak jakbym zamierzał udostępniać je publicznie. Najtrudniejsze jest tutaj ustalenie, jak duże jest każde wiadro.
Dobrą sztuczką, której używam, jest wyobrażenie sobie, jak moje aplikacje byłyby używane, gdyby zostały udostępnione publicznie. To często zachęca mnie do zmniejszenia kubełków i wyraźniejszego określenia jego „celu”.
źródło
Oto zaktualizowana prezentacja z 6 września 2008 r.
DjangoCon 2008: aplikacje wielokrotnego użytku @ 7:53
Slajd: Reusable_apps.pdf
źródło
Mam tendencję do tworzenia nowych aplikacji dla każdego logicznie oddzielnego zestawu modeli. na przykład:
źródło
Zasada, którą kieruję się jest taka, że powinna to być nowa aplikacja, jeśli chcę ponownie użyć tej funkcji w innym projekcie.
Jeśli wymaga głębokiego zrozumienia modeli w twoim projekcie, prawdopodobnie bardziej spójne będzie przyklejenie go do modeli.
źródło
Dwie najlepsze odpowiedzi na to pytanie, które znalazłem w sieci, to:
Oba źródła zgadzają się, że w następujących sytuacjach należy utworzyć oddzielną aplikację:
źródło
„Aplikacja” może oznaczać wiele różnych rzeczy, wszystko sprowadza się do gustu. Na przykład, powiedzmy, że tworzysz bloga. Twoja aplikacja może być całym blogiem lub możesz mieć aplikację „administratora”, aplikację „witryny” dla wszystkich widoków publicznych, aplikację „rss”, aplikację „usług”, aby programiści mogli łączyć się z blogiem w swoich własne drogi itp.
Osobiście uczyniłbym sam blog aplikacją i wyłapałbym w nim funkcjonalność. Blog mógłby być wówczas dość łatwo ponownie wykorzystany w innych witrynach internetowych.
Zaletą Django jest to, że rozpoznaje każdy plik models.py na dowolnym poziomie twojego drzewa katalogów jako plik zawierający modele Django. Zatem podzielenie funkcjonalności na mniejsze „podaplikacje” w samej „aplikacji” nie sprawi, że nic trudniejszego.
źródło