Ответ 1
Джеймс Беннет имеет замечательный набор слайдов о том, как организовать многоразовые приложения в Django.
Я задумался об этом, но у меня все еще есть проблемы с тем, что Django определяет как "приложения".
Должен ли я создать новое приложение для каждой функциональности на сайте, даже если оно использует модели из основного проекта?
Ребята, у вас есть хорошее правило, когда нужно отделить новое приложение и когда сохранить функциональность вместе с "основным проектом" или другими приложениями?
Джеймс Беннет имеет замечательный набор слайдов о том, как организовать многоразовые приложения в Django.
Я предпочитаю думать о приложениях Django как о повторно используемых модулях или компонентах, чем о "приложениях".
Это помогает мне инкапсулировать и отделять определенные функции друг от друга, улучшая повторное использование, если я решит поделиться определенным "приложением" с сообществом в целом и с возможностью обслуживания.
Мой общий подход заключается в том, чтобы встраивать определенные функции или набор функций в "приложения", как будто я собираюсь публиковать их публично. Трудная часть здесь заключается в том, насколько велика каждая ведро.
Хороший трюк, который я использую, - это представить, как мои приложения будут использоваться, если они будут опубликованы публично. Это часто побуждает меня сжимать ведра и более четко определять его "цель".
Я стараюсь создавать новые приложения для каждого логически раздельного набора моделей. например:.
Вот обновленная презентация 6 сентября 2008 года.
DjangoCon 2008: многоразовые приложения @7: 53
Снято с горки
Должно ли это быть его собственным приложением?
- Это совершенно не связано с фокусом приложений?
- Это ортогонально тому, что я делаю?
- Будут ли мне нужны аналогичные функции на других сайтах?
Если кто-то из них "Да"? Тогда лучше разбить его на отдельное приложение.
Следующее правило - это новое приложение, если я хочу повторно использовать функциональность в другом проекте.
Если вам нужно глубокое понимание моделей вашего проекта, возможно, более сплоченно придерживаться моделей.
"Приложение" может быть много разных вещей, все это действительно сводится к вкусу. Например, скажем, вы строите блог. Ваше приложение может быть всем блогом, или вы можете иметь приложение "admin", приложение "site" для всех общедоступных представлений, приложение "rss", приложение "services", чтобы разработчики могли взаимодействовать с блогом в своих собственные пути и т.д.
Я лично сделал бы сам блог своим приложением и вырвал бы функциональность внутри него. Затем блог можно было бы использовать повторно на других веб-сайтах.
Хорошая вещь о Django заключается в том, что она распознает любой файл models.py на любом уровне вашего дерева каталогов в виде файла, содержащего модели Django. Таким образом, разбивка вашей функциональности на более мелкие "вспомогательные приложения" внутри самого "приложения" не усложнит ситуацию.
Два лучших ответа на этот вопрос, которые я нашел в Интернете:
Оба источника согласны с тем, что вам следует создать отдельное приложение в следующих ситуациях: