it-swarm-eu.dev

Kdy vytvořit novou aplikaci (s startapp) v Django?

O tom jsem se snažil, ale stále mám problémy s tím, co Django definuje jako "aplikace". 

Měl bych vytvořit novou aplikaci pro každou funkci na webu, i když používá modely z hlavního projektu? 

Máte kluci dobré pravidlo, kdy oddělit novou aplikaci, a kdy zachovat funkčnost spolu s "hlavním projektem" nebo jinými aplikacemi?

79
Håkan

James Bennett má skvělý soubor snímků o tom, jak organizovat opakovaně použitelné aplikace v Django.

39
Antti Rasinen

Dávám přednost přemýšlení o aplikacích Django jako opakovaně použitelných modulech nebo komponentách než jako o „aplikacích“. 

To mi pomáhá zapouzdřit a oddělit určité funkce od sebe navzájem, zlepšením opětovné použitelnosti bych se měl rozhodnout sdílet určitou "aplikaci" s komunitou jako takovou a udržovatelnost.

Mým obecným přístupem je vytvořit specifické funkce nebo sady funkcí do "aplikací", jako bych je chtěl zveřejnit. Těžká část zde spočívá v tom, jak velký je každý kbelík. 

Dobrým trikem, který používám, je představit si, jak by se mé aplikace používaly, kdyby byly zveřejněny. To mě často vybízí k tomu, abych zmenšil kbelíky a jasněji definoval jeho „účel“.

18
blahspam

Mám tendenci vytvářet nové aplikace pro každou logicky oddělenou sadu modelů. např.:

  • Profily uživatelů
  • Fórum Příspěvky
  • Blog příspěvky
11
pobk

Zde je aktualizovaná prezentace dne 6. září 2008.

DjangoCon 2008: Opakovaně použitelné aplikace @ 7: 53

Slide: Reusable_apps.pdf

Převzato ze skluzavky

Měla by to být jeho vlastní aplikace?

  • Je to zcela nesouvisející se zaměřením aplikace?
  • Je to ortogonální na cokoli jiného, ​​co dělám?
  • Budu potřebovat podobnou funkci na jiných stránkách?

Pokud některý z nich je "Ano"? Pak je nejlepší rozdělit na samostatnou aplikaci .

11
Yeo

Pravidlo, které následuji, by mělo být novou aplikací, pokud chci znovu použít funkci v jiném projektu.

Pokud to vyžaduje hluboké pochopení modelů ve vašem projektu, je to pravděpodobně soudržnější držet se s modely.

5
Ryan

„Aplikace“ by mohla být mnoho různých věcí. Řekněme například, že vytváříte blog. Vaše aplikace může být celý blog, nebo můžete mít aplikaci „admin“, aplikaci pro všechny veřejná zobrazení, aplikaci „rss“, aplikaci „služby“, takže vývojáři mohou propojit blog s jejich stránkami. vlastní cesty atd.

Já osobně bych blog sám app, a vypuknout funkce v něm. Blog by pak mohl být na jiných webových stránkách používán poměrně snadno.

Pěkná věc na Django je v tom, že rozpozná jakýkoli soubor models.py v jakékoli úrovni vašeho adresářového stromu jako soubor obsahující modely Django. Takže lámání vašich funkcí do menších „dílčích aplikací“ v rámci „aplikace“ samo o sobě nebude dělat nic těžšího.

1
willurd

Dvě nejlepší odpovědi na tuto otázku, kterou jsem našel na webu, jsou:

  1. Znovu použitelné aplikace Talk ( diapozitivy ) ( video ) jsou také zmíněny v dalších odpovědích. Bennett, autor a přispěvatel Django, pravidelně publikuje aplikace pro ostatní a má silný pohled na mnoho malých aplikací.
  2. Doordash's Tips for Django v Scale který dává opačné rady a říká, že v jejich případě migrovali do jediné aplikace po spuštění několika samostatných aplikací. Došlo k problémům s grafem závislosti migrace mezi aplikacemi.

Oba zdroje souhlasí s tím, že byste měli vytvořit samostatnou aplikaci v následujících situacích:

  • Pokud plánujete znovu použít aplikaci v jiném projektu Django (zejména pokud plánujete publikovat ji pro ostatní, aby ji mohli znovu použít).
  • Pokud aplikace má málo nebo žádné závislosti mezi ním a jinou aplikací. Zde si můžete představit aplikaci, která bude v budoucnu fungovat jako vlastní mikroservice.
1
Jonathan Berger