Я использую Django уже много лет (начиная с Django 1.2). и в прошлом я использовал различные типы веб-фреймворков (таких как CakePHP, Rails, ASP.NET MVC и некоторые другие полнотекстовые фреймворки). Django не был моей первой инфраструктурой.
В разных рамках существуют различия в подходах и преимуществах. Есть определенная часть тех структур, которые мне нравятся, а я нет. В этом контексте я хотел бы более подробно рассмотреть дизайн Django Framework.
После перехода на Django мне нравится, как он разрабатывает свою инфраструктуру. При изучении нового языка (например, Go, Scala, Ruby, Haskell) я пытаюсь найти структуру, которая имеет некоторое сходство в своем дизайне, особенно те, о которых я упоминал позже.
Ниже приведено два решения по дизайну каркаса Django:
- он поощряет подключаемые приложения или повторное использование приложений.
Следовательно:
- отходит от монолитный дизайн Джейкоба Каплана-Мосса
- с помощью нескольких приложений в создать полный сайт, без какой-либо модели или логики
- написание Django, не относящегося к проекту, упомянутого в Практические проекты Django Джеймса Беннета
- вместо классического MVC использует шаблон просмотра модели:
- упомянутый в FAQ.
- описывает, какие данные представлены
- описывает, как данные представлены
- просмотр обычно передает шаблону Контроллер
- вероятно, является самой структурой: машиной, которая отправляет запрос в соответствующее представление, в соответствии с конфигурацией URL-адреса Django.
Я бы не поверил, что Django пионер таких функций. Я полагал, что эта схема очень распространена в Framework Design. Просто я понятия не имею, что называется (дизайн) шаблона? Эта концепция очень полезна для применения в других рамках. Я полагал, что знание названия шаблона может помочь мне понять или даже создать новую структуру на разных языках с той же концепцией.
В настоящее время существует множество веб-фреймворков, большинство из которых следуют классическому шаблону MVC. Некоторые используют концепцию плагина для добавления определенных возможностей. Однако плагин разрешает повторное использование в разных подходах в зависимости от контекста.
Таким образом, я попытался изучить как можно больше возможностей, чтобы найти альтернативную структуру на разных языках. Надеюсь, что я смогу найти образец, который использует Django. Однако мне очень трудно узнать все из них. На самом деле, я пока не нашел его.
Я искал:
- Django как фреймворк в рубине
- Django как фреймворк в 'Java'
- Django как структура в "Haskell"
- Django как структура в 'Go-Lang'
- Django как фреймворк в 'Scala'
К сожалению, ни один из них на самом деле не выделяет концепцию, которая меня интересует.
В этом Q & A я хотел бы знать, что люди называют такой структурой? (Или какой шаблон использует Django?) Было бы хорошо, если бы вы могли дать ссылки в этом дизайне, которые другие структуры могли бы использовать его тоже?