Django-like Framework Pattern

Я использую Django уже много лет (начиная с Django 1.2). и в прошлом я использовал различные типы веб-фреймворков (таких как CakePHP, Rails, ASP.NET MVC и некоторые другие полнотекстовые фреймворки). Django не был моей первой инфраструктурой.

В разных рамках существуют различия в подходах и преимуществах. Есть определенная часть тех структур, которые мне нравятся, а я нет. В этом контексте я хотел бы более подробно рассмотреть дизайн Django Framework.

После перехода на Django мне нравится, как он разрабатывает свою инфраструктуру. При изучении нового языка (например, Go, Scala, Ruby, Haskell) я пытаюсь найти структуру, которая имеет некоторое сходство в своем дизайне, особенно те, о которых я упоминал позже.

Ниже приведено два решения по дизайну каркаса 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 существуют уже много лет, он имеет гораздо лучшую поддержку!