Задать вопрос

Наилучшая структура Django-проекта?

Проблема
Не могу понять, какая же все-таки наилучшая структура в 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
  • Вопрос задан
  • 4766 просмотров
Подписаться 7 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
MyNameIsDice
@MyNameIsDice
Работаю с Django(учитывая время изучения) почти год, большую часть времени писал API на DRF(Django REST Framework). Сам тоже интересовался вопросом best practices но везде находил различные подходы. Со временем решил написать свой "best practice" репозиторий ориентированный для DRF что бы быстро начать проект. Время от времени изучая что-то новое обновляю его, можешь ознакомится для формирования своих предпочтений.
(upd: на момент написания ответа он сейчас не в новейшем состоянии)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы