Django Book: концепция разработки MVC – Model, View, Controller.

Автор: | 21/02/2015

django_logo_2

Предыдущая часть.

Перед тем, как мы начнём дальше писать код, давайте остановимся на минуту, и рассмотрим общую схему приложения на Django с использованием баз данных.

Как мы уже упомнили в предыдущих частях, Django разработана с особой поддержкой “слабых связей” и строгим разграничением составляющих частей приложения. Если вы следуете этой философии – то вам будет легко вносить изменения в одной части приложения, не затрагивая функциональность других. Например, в функциях представлений – мы обсуждали важность разделения структуры выполнения от структуры отображения, и поэтому использовали систему шаблонов. В случае с уровнем баз данных – мы будем применять ту же философию.

Весте эти три части – логика доступа к данным, логика исполнения и логика предоставления данных – составляют концепт, который обычно называют концепцией Model-View-Controller (MVC) (модель-представление-контроллер) архитектуры приложений. В этой схеме “Модель” относится к структуре данным, “Представление” – относится к части, которая отвечает за выборку того, что и как отображать, а “Контроллер” – относится к части, которая определяет какое представление использовать, например – в зависимости от ввода данных пользователя.

Почему акроним?

Цель явного определения шаблонов, таких как MVC, в основном для упрощения общения между разработчиками. Вместо того, что бы говорить вашему коллеге “Давай сделаем некую абстракцию уровня данных, затем отделим уровень, который будет заниматься отображением данных, а посредине добавим ещё один слой, который будет этим всем управлять” – вы можете просто скатать “Давай использовать модель MVC“.

Django следует концепции MVC достаточно строго, что бы его можно было называть “MVC фреймворк“. Вот краткое описание того, как M, V и C разделены в среде Django:

  • M – часть доступа к данным, обслуживается системой баз данных Django, которая описывается в этой главе.
  • V – часть, которая занимается выборкой того, что именно и как именно отображать, в Django этим занимаются представления (views) и шаблоны (templates).
  • C – часть, которая определяет представление в зависимости от указаний пользователя, этим занимается сам фреймворк, следуя настройкам URLconf и вызывая соответствующую функцию Python для заданного URL-а.

Так как “C” занимается сам фреймворк и больше всего действий происходит в моделях, шаблонах и представлениях, Django может называться “MVC фреймворком“.

В концепции MTV:

  • M означает “Model” – модель, уровень доступа к данным. Сюда относится всё, что связано с данными – как получить к ним доступ, как проверить их, какое у них поведение и отношение друг с другом.
  • T означает “Template” – шаблоны. Этот уровень содержит в себе всё, что связано с отображением: как именно что-то должно быть отображено на веб-странице или любом другом документе.
  • V означает “View” – представление. Этот уровень связан со всей логикой, связывающей модель и необходимые шаблоны. Вы можете себе представлять это уровень как мост между моделями и шаблонами.

Если вы знакомы с другими фреймворками MVC, такими как Ruby on Rails, вы можете рассматривать представления в Django как “контролеры”, а шаблоны Django – как представления. Эта путаница вызвана различным толкованием концепции MVC. В интерпретации Django, представление (view) описывает данные, которые должны быть представлены пользователю; т.е. не столько как они будут переданы, сколько какие именно данные передать. В Ruby on Rails же, и других подобных фреймворках, предполагается что роль контроллера включает в себя выбор какие данные передать пользователю, тогда как представление определяет – как именно эти данные будут выглядеть, а не какие данные передавать.

Ни одна из этих интерпретаций не является более или менее верной. Главное – понимать основополагающие концепции модели MVC.

Продолжение – Django Book: настройка базы данных