В этом шаге мы узнаем об архитектуре Model View Controller (MVC) и о том, как она используется в веб-разработке. Мы также узнаем о его использовании конкретно в Django.
Веб-сайты уже давно претерпели значительную эволюцию от простых HTML-страниц до сложных конструкций с использованием фреймворков. Чтобы справиться со сложностью и повысить возможность повторного использования кода, при реализации этих проектов использовались различные архитектурные шаблоны, которые упрощали работу разработчиков, и из всех шаблонов MVC стал наиболее популярным в использовании.
Теперь, чтобы определить его формально, архитектура MVC — это организованный шаблон проектирования архитектуры программного обеспечения, который используется для разделения функций приложения и логики программы на различные компоненты. Первоначально эта архитектура использовалась для разработки настольных пользовательских интерфейсов (GUI), но сегодня она широко используется в разработке веб-приложений. В настоящее время эту концепцию можно легко найти во многих средах веб-разработки, таких как Ruby on Rails (Ruby), Zend (PHP), Express (JS), Angular (JS), Django (Python) и т. д.
Как следует из названия, архитектура MVC состоит из трех компонентов: Модель, Представление и Контроллер.
Давайте посмотрим, что они делают:
Модель
- Этот компонент обрабатывает всю логику данных, что означает, что именно он взаимодействует с базой данных и обрабатывает все операции с данными.
- Он не может напрямую взаимодействовать с пользователем и только он может напрямую взаимодействовать с базой данных.
- Он отвечает на инструкции, данные контроллером, независимо от того, извлекает ли он данные или обновляет их.
Вид
- Этот компонент отвечает за отображение данных пользователю в подходящем формате.
- Это фактическое представление приложения или то, что видит пользователь.
- Он взаимодействует с контроллером для получения извлеченных данных.
Контроллер
- Именно этот компонент отвечает за обработку взаимодействия с пользователем, что означает, что именно он получает входные данные и запросы (GET, POST и т. д.), данные пользователем.
- Он обрабатывает все коммуникации между моделью и представлением.
- Он отправляет инструкции модели для обновления или извлечения и представлению для обновления представления.
Теперь, чтобы лучше понять, давайте посмотрим на фактическую реализацию MVC и то, как модель, представление и контроллер взаимодействуют через блок-схему.
- Все, что пользователь видит на экране, обрабатывается
VIEW. Обычно состоит из HTML и CSS. - Когда пользователь дает ввод или любой запрос, проверка выполняется
CONTROLLER, и он отправляет дальнейшие инструкции вMODEL. MODELобрабатывает все операции с данными и возвращает данныеCONTROLLERили в случае обновления информируетVIEWобо всех изменениях.VIEWиCONTROLLERвместе обрабатывают взаимодействие и запросы пользователя.
* Работа модели MVC может немного отличаться в разных средах.
Теперь, несмотря на то, что концепция MVC широко используется в различных фреймворках, может быть сложно понять, как она работает в таких фреймворках, как Django. Давайте посмотрим, какие отличия есть в реализации Django MVC.
Django MVC: MTV
Теперь, для тех, кто не знаком с этим, Django — это высокоуровневый веб-фреймворк Python, который широко используется в настоящее время из-за его чистого дизайна и использует дизайн Model Template View, который похож на концепцию MVC.
Представление шаблона модели (MTV) немного отличается от MVC.
- Компонент
MODELи его функция здесь остаются прежними. - Компонент
TEMPLATEв целом управляет тем, как данные будут представлены пользователю. - Компонент
VIEWздесь описывает, какие данные представлены, и не имеет значения, каким образом они представлены. - Часть контроллера, которая также обрабатывает URL-адреса, берется на себя самим фреймворком.
VIEWреализованы в виде функций обратного вызова, которые возвращают данные для определенного URL-адреса (файлviews.pyсодержит все представления).- Используя
VIEW, шаблон отображается, шаблоны в Django - это не что иное, как файлы HTML, смешанные с языком шаблонов Django (DTL). (Обычно отдельная папка шаблонов, содержащая все файлы HTML для обработки шаблонов) - Отдельный файл
models.pyсодержит все модели. MTVтакже называетсяMTV + Controller, но слово «контроллер» часто удаляется, потому что эта часть уже включена в сам Django.