Я искал это в Google, но у меня все еще возникают проблемы с тем, что Django определяет как «приложения».
Следует ли мне создавать новое приложение для каждой части функциональности сайта, даже если оно использует модели из основного проекта?
У вас, ребята, есть хорошее практическое правило, когда нужно отделить новое приложение, а когда сохранить функциональность вместе с «основным проектом» или другими приложениями?
Я предпочитаю думать о приложениях Django как о повторно используемых модулях или компонентах, чем о «приложениях».
Это помогает мне инкапсулировать и отделять определенные функции друг от друга, улучшая возможность повторного использования, если я решу поделиться определенным «приложением» с сообществом в целом, а также удобство сопровождения.
Мой общий подход состоит в том, чтобы объединить определенные функции или наборы функций в «приложения», как если бы я собирался выпустить их публично. Сложнее всего выяснить, насколько велико каждое ведро.
Хороший трюк, который я использую, - это представить, как мои приложения будут использоваться, если они будут выпущены публично. Это часто побуждает меня сокращать ведра и более четко определять его «назначение».
источник
Вот обновленная презентация от 6 сентября 2008 года.
DjangoCon 2008: многоразовые приложения @ 7:53
Слайд: Reusable_apps.pdf
источник
Я стараюсь создавать новые приложения для каждого логически отдельного набора моделей. например:
источник
Я следую правилу: это должно быть новое приложение, если я хочу повторно использовать функциональность в другом проекте.
Если для этого требуется глубокое понимание моделей в вашем проекте, вероятно, более связно будет привязать его к моделям.
источник
Я нашел два лучших ответа на этот вопрос в Интернете:
Оба источника согласны с тем, что вам следует создавать отдельное приложение в следующих ситуациях:
источник
«Приложение» может состоять из множества разных вещей, все зависит от вкуса. Например, предположим, вы создаете блог. Ваше приложение может представлять собой весь блог, или у вас может быть приложение «администратор», приложение «сайт» для всех общедоступных представлений, приложение «rss», приложение «службы», чтобы разработчики могли взаимодействовать с блогом в своих собственные пути и т. д.
Лично я бы сделал сам блог приложением и выделил бы его функциональность. Тогда блог можно было бы довольно легко повторно использовать на других веб-сайтах.
Преимущество Django заключается в том, что он распознает любой файл models.py на любом уровне вашего дерева каталогов как файл, содержащий модели Django. Таким образом, разбиение вашей функциональности на более мелкие «подприложения» внутри самого «приложения» не сделает ничего более сложным.
источник