11

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

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

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

Ниже приведены Джанго рамки дизайнерское решение 2, что очень отличается:

  • это поощрять вставных приложения или приложения повторного использования. Следовательно:
  • использует Model View Template вместо классического MVC:
    • указан в FAQ.
    • вид описывает, какие данные представлены
    • шаблон описывает, как данные представлены
    • представлен вид, как правило делегатов на шаблон
    • контроллер, вероятно, сама основа: механизм, который отправляет запрос на соответствующее представление в соответствии с конфигурацией URL-адреса Django.

Я бы не поверил, что Джанго пионерские такие функции. Я полагал, что эта схема очень распространена в Framework Design. Просто я понятия не имею, что называется (дизайн) шаблона? Эта концепция очень полезна для применения в других рамках. Я полагал, что знание названия шаблона может помочь мне понять или даже создать новую структуру на разных языках с той же концепцией.

В настоящее время существует множество веб-каркасов, большинство из которых соответствуют классическому шаблону MVC. Некоторые используют концепцию плагина для добавления определенных возможностей. Однако плагин разрешает повторное использование в разных подходах в зависимости от контекста.

Таким образом, я попытался изучить столько фреймов, сколько мог, чтобы найти альтернативную структуру на разных языках. Надеюсь, что я смогу найти образец, который использует Django.Однако мне очень трудно узнать all of them. На самом деле, я пока не нашел его.

Я ищу:

К сожалению, ни один из них на самом деле не выдвигает на первый план концепцию, которая меня интересует.

В этом Q & A, мне хотелось бы знать, что люди называют такой структурой? (Или какой шаблон использует Django?) Было бы неплохо, если бы вы могли дать ссылки в этом дизайне, которые могли бы использовать и другие рамки.

+0

Не попадайте в это, как на сравнение. По правде говоря, я искал этот образец, но я обнаружил, что не каждый язык дает такой же опыт и выразительную силу, как и другой. PHP отличается от рубинов, а Scala отличается от Go. Их рамки будут иными. Django уникален тем, чем является. –

+0

@FanisDespoudis, Согласитесь, мы не должны находить единую инфраструктуру истинности, у разных фреймов разные возможности. Они также лучше работают в разных областях. Просто этот вопрос предназначен для изучения шаблона, чтобы мы могли обратиться в другой домен. – Yeo

+0

Я не уверен, почему эти downvoters должны снизить этот вопрос. Надеюсь, мы не будем сравнивать, какие рамки лучше. Но, скорее, мы узнаем, что мы можем из разных рамок. – Yeo

ответ

1

Что такое django, что вы не можете сделать на других языках?

  • Доступ к базе данных или модели? - нет, python также имеет SQLAlchemy; ruby имеет Active Record ...
  • это виды, или веб-рамки? - нет, вы можете предоставить виды Flask, Pyramid, rails, php ...
  • это система шаблонов? - нет, у вас также есть Jinja; mustache, Liquid ...
  • Это admin Contrib пакеты? - нет, у вас есть phpmyadmin, workbench ...
  • это набор библиотек, которые облегчают вашу разработку? инструментарий?

django имеет большой набор инструментов , много пакетов, которые можно использовать; это платформа, то есть у нее достаточно ядра, чтобы стать отправной точкой для многих проектов, и достаточно сообщество за ним, чтобы иметь множество пакетов, чтобы сделать интеграцию в «под ключ» одним из простых решений.

django использует DRY (Don't Repeat Yourself) принцип как философия конструкции. С точки зрения повторного использования, четкая ответственность за каждую часть/приложение упрощает повторное использование компонентов. Но это не занимает хорошо разработанную платформу; акцент должен делаться на компонентах, которые написаны так, чтобы их можно было повторно использовать. Например. общий мечения, конфигурация/компоненты управляемых данными ...

+0

Меня интересует возможность повторного использования приложений. Я согласен с теми аспектами, которые вы выделили. Они распространены в большинстве рамок, но не для повторного использования приложения. Вы слышали о [Flask-blueprint] (http://flask.pocoo.org/docs/latest/blueprints/). Он также использует тот же шаблон, что и Django-приложения. – Yeo

+0

, если вы имеете в виду принцип ** DRY ** (не повторяйте сам), да, 'django' использует этот принцип в качестве ориентира/философии дизайна. – dnozay

+0

Ницца. Один момент: я бы не сравнивал Django 'admin' с' phpmyadmin' или 'workbench', хотя и не закрывал. – Wtower

2

Глядя на Django design philosophies

Я думаю, что они используют/объединить много различных шаблонов проектирования пытаются выполнить философий. Трудно сопоставить одну концепцию.

Совет должен посмотреть на Software Design Pattern, и должно быть возможно определить, что многие образцы используются в джанго. Многие шаблоны, конечно, распространены и в других рамках.

Например (модели более или менее б):

  • modelform_factory карты в "Строитель"
  • QuerySet может быть сопоставлен с "Ленивая инициализация" отображается
  • ORM так/базы данных "Адаптер"
+0

Благодарим вас за то, что вы приводите примеры того, как шаблоны проектирования применяются и отображаются в разных частях Django внутренне. Я включил некоторые ссылки на исходный код django в ваши примеры. – Yeo

0

Django - это MVC.

MVC - это шаблон не должны применяться строгие правила. Шаблон пытается дать общепринятое решение частых проблем. Проблема заключается в том, «как правильно организовать веб-инфраструктуру», и решение «разделяет данные, логику и пользовательский интерфейс» в значимых модулях.

Поэтому Django - это MVC. Django логически разделяет эти концепции (и многие другие) в модулях. Вот что важно для ИМО. Джанго точка зрения не совпадает с точки зрения MVC, но ... poteto potato ...

О приложение многократного использования:

Django является фреймворком для перфекционисты (...) и перфекционисты (или просто хорошие разработчики) пишут повторно используемые коды. Это выражается Django DRY philosophy и материализуется в приложениях Django.

Я уверен, что вы можете создавать приложения-подобные компоненты с помощью других веб-фреймворков. Конечно, с приложения находятся в природе Django с тех пор, как много лет, он имеет гораздо лучшую поддержку!

 Смежные вопросы

  • Нет связанных вопросов^_^