Чи може хтось пояснити мені, де різняться між Django та моделлю контролера перегляду моделі?
Функціонально, чого ми можемо очікувати від цих відмінностей - тобто те, що працює по-різному порівняно з Django, наприклад, Ruby on Rails?
Чи може хтось пояснити мені, де різняться між Django та моделлю контролера перегляду моделі?
Функціонально, чого ми можемо очікувати від цих відмінностей - тобто те, що працює по-різному порівняно з Django, наприклад, Ruby on Rails?
Відповіді:
Відповідно до книги "Джанго" , Джанго досить чітко слідує схемі MVC, щоб її можна було назвати рамкою MVC.
Джанго називають основою MTV, оскільки контролер обробляється самим фреймворком, і більша частина хвилювань відбувається в моделях, шаблонах та видах.
Більше про MTV / MVC можна прочитати тут:
Якщо ви знайомі з іншими структурами веб-розробки MVC, такими як Ruby on Rails, ви можете вважати, що подання Django є контролерами, а шаблони Django - переглядами .
Це прикрою плутаниною, спричиненою різними трактуваннями MVC.
У інтерпретації Джанго MVC подання описує дані, які надходять до користувача; не обов’язково лише те, як виглядають дані, але які дані представлені.
На противагу цьому, Ruby on Rails та подібні рамки передбачають, що завдання контролера включає визначення того, які дані будуть представлені користувачеві, тоді як погляд суворо виглядає як дані, а не які дані.
Поширені питання про Django - це гідне місце для початку:
У нашій інтерпретації MVC "перегляд" описує дані, що надходять до користувача. Це не обов'язково, як вони виглядають, але які дані представлені. Перегляд описує, які дані ви бачите, а не як їх бачите. Це тонка відмінність.
...
Крім того, доцільно відокремлювати вміст від презентації - там, де надходять шаблони. У Джанго "перегляд" описує, які дані подаються, але перегляд зазвичай делегує шаблону, який описує, як дані подаються.
Куди ж вписується “контролер”? У випадку з Джанго це, мабуть, сам фреймворк: обладнання, яке надсилає запит у відповідний вид, відповідно до конфігурації URL-адреси Джанго.
Якщо ви голодні за абревіатурами, ви можете сказати, що Django - це рамка "MTV" - тобто "модель", "шаблон" та "перегляд". Ця поломка має набагато більше сенсу.
Майте на увазі, що «Контролер моделей перегляду» - це лише зразок, тобто спроба описати загальну архітектуру. Тож краще питання може бути: «Наскільки добре Django відповідає схемі контролера перегляду моделі?»
Коли ви кодуєте, не замислюючись про назви фреймворків, немає субстантних відмінностей, наприклад, RoR. Але це залежить від використання, яке ви надаєте models
, оскільки на Django вони легко містять певну логіку, яка в інших структурах залишатиметься на рівні контролера.
Програма view
Django, як правило, є набором запитів для отримання даних і передає їх до шаблону.
views
в Django - це щось на кшталт controller
MVC, а template
в Django швидшеviews
У mvt запит на URL-адресу надсилається до представлення даних. Цей вигляд викликає модель, виконує маніпуляції та готує дані для виведення. Дані передаються в шаблон, який надається як відповідь. в ідеалі в веб-рамках контролер прихований від перегляду.
Ось де відмінність від MVC: у mvc користувач взаємодіє з gui, контролер обробляє запит та повідомляє модель та перегляд запитує модель для відображення результату користувачеві.