Проблема
Не могу понять, какая же все-таки наилучшая структура в Django-проектах. Гуглил, но везде все пишут по-разному с припиской "не факт, что это 'правильно', но я делаю так...". А хотелось бы раз и навсегда для себя уяснить, какая же все-таки правильная, гибкая и наиболее логичная структура в Django-проектах?
Что я пробовал?
Django изучаю уже 3 месяца по книге Дронова 2021 года выпуска, и там структура примерно такая:
root_folder/
--.git/
--my_project/
----my_project/
----app_1/
----app_n/
----static/
----template/
----media/
----db.sqlite3
----manage.py
--venv
--.gitignore
--README.md
--requirements.txt
С какими проблемами пришлось толкнуться?
Но, используя такую структуру, я столкнулся с рядом проблем:
- Когда приложений становится много, становится очень трудно ориентироваться в папке проекта. Есть ли смысл выносить их в папку apps?
- Где хранить общий код? Например, общие модели, общие шаблоны, общие static-файлы, обычный общий код на Python (какой-то функционал, свои библиотеки, если такие имеются)?
- Как все-таки правильно работать с settings.py? Я видел примеры, где файл заменяли на пакет settings/, в котором хранились модули dev.py, prod.py, base.py. Но это все были субъективные мнения, надеюсь, никого не обижу, ноу-нейм разработчиков. Есть ли так называемая best practice?
- Также в силу моей неопытности мне не совсем понятно, куда относить функционал, который не относится ни к одному приложению в проекте, но который достаточно мал, чтобы выносить его в отдельное самостоятельное приложение? Например, страницы "Главная" и "О нас". В одном из моих проектов это небольшие страницы с минимальной логикой. И мне пришлось объединить их в одно приложение main, хотя строго говоря, "Главная" и "О нас" никак не связаны друг с другом, но девать их куда-то нужно было.
К чему я пришел?
Вот, к какой структуре Django-проектов пришел я. Оцените, пожалуйста, или посоветуйте действительно хорошую и универсальную структуру Django-проектов. Для упрощения демонстрации я не стал указывать общепринятые вещи по типу urls.py, asgi.py и т.д.:
root_folder/
--.git/
--my_project/
----core/
------settings/
--------base.py
--------dev.py
--------prod.py
----apps/
------app_1/
------app_n/
----common/
------template/
------static/
------models/
------any_other_module_or_package/
----manage.py
--venv
--.gitignore
--README.md
--requirements.txt