Django-like Framework Pattern
Я использую Django уже много лет (начиная с Django 1.2). и в прошлом я использовал различные типы веб-фреймворков (таких как CakePHP, Rails, ASP.NET MVC и некоторые другие полнотекстовые фреймворки). Django не был моей первой инфраструктурой.
В разных рамках существуют различия в подходах и преимуществах. Есть определенная часть тех структур, которые мне нравятся, а я нет. В этом контексте я хотел бы более подробно рассмотреть дизайн Django Framework.
После перехода на Django мне нравится, как он разрабатывает свою инфраструктуру. При изучении нового языка (например, Go, Scala, Ruby, Haskell) я пытаюсь найти структуру, которая имеет некоторое сходство в своем дизайне, особенно те, о которых я упоминал позже.
Ниже приведено два решения по дизайну каркаса Django:
- он поощряет подключаемые приложения или повторное использование приложений.
Следовательно:
- вместо классического MVC использует шаблон просмотра модели:
- упомянутый в FAQ.
- описывает, какие данные представлены
- описывает, как данные представлены
- просмотр обычно передает шаблону
Контроллер
- вероятно, является самой структурой: машиной, которая отправляет запрос в соответствующее представление, в соответствии с конфигурацией URL-адреса Django.
Я бы не поверил, что Django пионер таких функций. Я полагал, что эта схема очень распространена в Framework Design. Просто я понятия не имею, что называется (дизайн) шаблона? Эта концепция очень полезна для применения в других рамках. Я полагал, что знание названия шаблона может помочь мне понять или даже создать новую структуру на разных языках с той же концепцией.
В настоящее время существует множество веб-фреймворков, большинство из которых следуют классическому шаблону MVC. Некоторые используют концепцию плагина для добавления определенных возможностей. Однако плагин разрешает повторное использование в разных подходах в зависимости от контекста.
Таким образом, я попытался изучить как можно больше возможностей, чтобы найти альтернативную структуру на разных языках. Надеюсь, что я смогу найти образец, который использует Django. Однако мне очень трудно узнать все из них. На самом деле, я пока не нашел его.
Я искал:
К сожалению, ни один из них на самом деле не выделяет концепцию, которая меня интересует.
В этом Q & A я хотел бы знать, что люди называют такой структурой? (Или какой шаблон использует Django?) Было бы хорошо, если бы вы могли дать ссылки в этом дизайне, которые другие структуры могли бы использовать его тоже?
Ответы
Ответ 1
Глядя на Django философия дизайна
Я думаю, что они используют/объединяют множество различных шаблонов дизайна, пытающихся выполнить философию. Трудно сопоставить одну концепцию.
Совет должен посмотреть шаблон разработки программного обеспечения, и должно быть возможно определить, что многие шаблоны используются в django. Многие шаблоны, конечно, распространены и в других рамках.
Например (более или менее используемые шаблоны):
- modelform_factory сопоставляется с "Builder"
- QuerySet можно сопоставить с "Lazy initialization"
- ORM/база данных, сопоставленная с "адаптером"
Ответ 2
Что такое django
, что вы не можете сделать на других языках?
- Это доступ к базе данных или к моделям? - нет, у python также есть
SQLAlchemy
; ruby имеет Active Record
...
- Это виды или веб-рамки? - нет, вы можете предоставить представления с
Flask
, Pyramid
, rails
, php
...
- это система шаблонов? - нет, у вас также есть
Jinja
; mustache
, Liquid
...
- это пакеты
admin
contrib? - нет, у вас есть phpmyadmin
, workbench
...
- Это набор библиотек, чтобы сделать вашу разработку легкой? инструментарий?
django
имеет отличные инструменты , многие пакеты, которые вы можете использовать; это платформа, то есть у нее достаточно ядра, чтобы стать отправной точкой для многих проектов, и достаточно сообщества, чтобы иметь множество пакетов для интеграции в очередь -key решение легкий ветерок.
django
использует принцип DRY (Do not Repeat Yourself) как философия дизайна. С точки зрения повторного использования, четкая ответственность за каждую часть/приложение упрощает повторное использование компонентов. Но это не занимает хорошо разработанную платформу; акцент должен делаться на компонентах, которые написаны так, чтобы их можно было повторно использовать. Например. общие тегирования, компоненты конфигурации/данных...
Ответ 3
Django - это MVC.
MVC - это шаблон, не должны применяться строгие правила. Шаблон пытается дать общепринятое решение частых проблем. Проблема заключается в том, как "правильно организовать веб-инфраструктуру", и решение "разделяет данные, логику и пользовательский интерфейс" в значимых модулях.
Поэтому Django является MVC. Django логически разделяет эти концепции (и многие другие) в модулях. Это важно для ИМО. Представление Django - это не то же самое, что и просмотр MVC, но... poteto potato...
О возможности повторного использования приложения:
Django - это веб-фреймворк для перфекционистов (...), а перфекционисты (или просто хорошие разработчики) пишут многоразовый код. Это выражается в Django DRY философии и реализуется в приложениях Django.
Я уверен, что вы можете создавать приложения-подобные компоненты с другими веб-фреймворками. Конечно, поскольку приложения в природе Django существуют уже много лет, он имеет гораздо лучшую поддержку!