Коли створити нову програму (зі стартаппом) у Django?


102

Я покрутився з цього приводу, але у мене все ще виникають проблеми щодо того, що Джанго визначає як "програми".

Чи варто створити нову програму для кожного функціоналу на сайті, навіть якщо він використовує моделі головного проекту?

Ви, хлопці, маєте чітке правило, коли слід розділяти новий додаток, а коли зберігати функціональність разом із "основним проектом" чи іншими програмами?

Відповіді:


43

Джеймс Беннетт має чудовий набір слайдів про те, як організувати додатки для багаторазового використання в Джанго.


1
Чи означає це, що якщо я роблю дочірню модель, вона завжди повинна бути в одному додатку? Оскільки я не можу легко перенести його в інший проект, не привівши дві "програми"
Лайонел

18

Я вважаю за краще програми Django вважати модулями або компонентами для багаторазового використання, ніж як "додатками".

Це допомагає мені інкапсулювати та з’єднувати певні функції одне з одним, поліпшуючи повторну використання, якщо я вирішу поділитися певним "додатком" із спільнотою взагалі та ремонтувати.

Мій загальний підхід полягає в тому, щоб згрупувати певні функції або набори функцій у "програми" так, ніби я збирався публікувати їх публічно. Важкою частиною є з'ясування того, наскільки велике кожне відро.

Хороший трюк, який я використовую, - уявити, як мої програми використовувались, якби їх публічно випустили. Це часто спонукає мене скоротити відра і чіткіше визначити його "призначення".


16

Ось оновлена ​​презентація 6 вересня 2008 року.

DjangoCon 2008: багаторазові програми @ 7: 53

Слайд: багаторазовий_apps.pdf

Взято зі слайда

Це має бути його власним додатком?

  • Це абсолютно не пов'язано з фокусом програми?
  • Це ортогонально до всього, що я роблю?
  • Чи потрібна мені подібна функціональність на інших сайтах?

Якщо хтось із них є "Так"? Тоді найкраще розбити його на окрему програму.


Слайд, який я побачив, не містить першого питання про "фокус програми".
johnny

@johnny Це є на слайді 31 99.
Ео

13

Я схильний створювати нові програми для кожного логічно окремого набору моделей. наприклад:

  • Профілі користувачів
  • Повідомлення на форумі
  • Повідомлення в блозі

6

Правило, яке я дотримуюся, це те, що це повинен бути новий додаток, якщо я хочу повторно використовувати функціональність в іншому проекті.

Якщо воно потребує глибокого розуміння моделей у вашому проекті, напевно, більш згуртовано дотримуватися його з моделями.


4

Дві найкращі відповіді на це питання, яке я знайшов в Інтернеті:

  1. Розмова про багаторазові програми ( слайди ) ( відео ), також згадана в інших відповідях. Беннетт, автор та автор проекту Джанго, регулярно публікує додатки, якими користуються інші, і має сильну точку зору на багато невеликих додатків.
  2. Поради Doordash щодо Джанго в масштабі, який дає протилежні поради та говорить, що в їхньому випадку вони перейшли до одного додатку після запуску багатьох різних програм. Вони зіткнулися з проблемами графіку залежності міграції між програмами.

Обидва джерела погоджуються, що вам слід створювати окремий додаток у таких ситуаціях:

  • Якщо ви плануєте повторно використовувати свою програму в іншому проекті Django (особливо якщо ви плануєте опублікувати його для повторного використання для інших).
  • Якщо у додатку мало залежностей між ним та іншим додатком. Тут ви, можливо, зможете уявити додаток, що працює як власна мікросервіс у майбутньому.

1

Додаток може бути різним, все дійсно зводиться до смаку. Наприклад, скажімо, що ви будуєте блог. Вашим додатком може бути весь блог, або ви можете мати додаток "адміністратор", додаток "сайт" для всіх публічних переглядів, додаток "rss", додаток "служби", щоб розробники могли взаємодіяти з блогом у своєму власні способи тощо.

Я особисто зробив би сам блог додатком і порушив би його функціонал. Потім блог можна буде легко використовувати на інших веб-сайтах.

Приємна річ у Django полягає в тому, що він розпізнає будь-який файл models.py в межах будь-якого рівня дерева вашого каталогу як файл, що містить моделі Django. Тож розбиття вашої функціональності на менші «додаткові програми» в рамках самої «програми» не ускладнить нічого.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.