Это отличный вопрос, но я не уверен, что StackOverflow - правильное место, чтобы задать его, так как нет однозначного ответа.Тем не менее, я пытаюсь дать ему шанс.
Django также следует шаблону проектирования MVC, но наименование немного другое.
- Модели Django -> Модели MVC
- Представления Django -> Контроллеры MVC
- Шаблоны Django -> Представления MVC
Эточасто упоминается как MTV вместо MVC.Но это не конец истории, потому что многие люди считают плохой идеей помещать слишком много бизнес-логики в представления по таким причинам, как тестируемость и возможность повторного использования.Существует два распространенных подхода к этой проблеме:
- толстые модели: вы помещаете всю свою бизнес-логику в службы
- : у вас есть отдельные модули, содержащие методы / классы для вашей бизнес-логики
Лично я работал с обоими, и у меня был лучший опыт использования сервисного подхода.
Эквивалентом DAO в Django, вероятно, является Django ORM.Обратите внимание, что это действительно только уровень абстракции для поддерживаемых реляционных баз данных.Если вы хотите использовать другой источник данных, такой как NoSQL DB или REST API, вы должны свернуть свое собственное решение или искать сторонние пакеты.
Java может иметь только один открытый класс на файл, и они должны иметьодно и то же имяВ Python такого ограничения нет, поэтому рекомендуется использовать несколько классов на файл (файлы .py называются модулями).Если модуль / файл становится слишком большим, вы можете превратить его в пакет (каталог с файлом __init__.py
), содержащий несколько модулей (и / или подпакетов).
Различие между приложением и проектомможет сбить с толку, поэтому я написал целую статью о схеме именования Django .Приложение Django представляет собой пакет Python, но обычно они организованы по доменам.Например, в системе управления библиотекой ваш проект library
может иметь приложение catalogue
для управления запасами и приложение checkout
для управления процессом извлечения книг.
Наконец, если выЯ специально рекомендую взглянуть на Django REST Framework .
.