Статья:

СТРУКТУРА WEB-ФРЕЙМВОРКА DASH. ИНТЕГРАЦИЯ DASH-ПРИЛОЖЕНИЯ В DJANGO-ПРИЛОЖЕНИЕ

Журнал: Научный журнал «Студенческий форум» выпуск №21(200)

Рубрика: Технические науки

Выходные данные
Сухоруков Я.И. СТРУКТУРА WEB-ФРЕЙМВОРКА DASH. ИНТЕГРАЦИЯ DASH-ПРИЛОЖЕНИЯ В DJANGO-ПРИЛОЖЕНИЕ // Студенческий форум: электрон. научн. журн. 2022. № 21(200). URL: https://nauchforum.ru/journal/stud/200/113559 (дата обращения: 23.12.2024).
Журнал опубликован
Мне нравится
на печатьскачать .pdfподелиться

СТРУКТУРА WEB-ФРЕЙМВОРКА DASH. ИНТЕГРАЦИЯ DASH-ПРИЛОЖЕНИЯ В DJANGO-ПРИЛОЖЕНИЕ

Сухоруков Ярослав Игоревич
магистрант, Московский государственный технологический университет «СТАНКИН», РФ, г. Москва

 

Dash — это фреймворк с открытым исходным кодом для создания интерфейса визуализации данных. Это достаточно молодой фреймворк, он появился в 2017 году как библиотека Python, в последствии она расширилась и включает в себя реализации для R и Julia. Dash помогает специалистам по обработке данных создавать аналитические веб-приложения, не требуя продвинутых знаний в области веб-разработки.

Ядро фреймворка Dash составляет три технологии:

  • Flask предоставляет функциональность веб-сервера.
  • React.js отображает пользовательский интерфейс веб-страницы.
  • Plotly.js генерирует диаграммы, используемые в вашем приложении.

Стоить отметить, что Plotly.js имеет реализацию и на других языках —   Python, R, MATLAB и пр. Для этих языков программирования Plotly выступает в роли «чартинг» библиотеки, генерирует «связку» HTML+CSS+JS на основе кода, написанного на исходном языке. Это же и касается фреймворка Dash. Такой подход дает много преимущества:

  • Для создания полноценного веб приложения достаточно использовать один язык.
  • Автоматическая расположение элементов, так же есть возможность использовать сетку bootstrap.
  • Предоставление данных для визуализации происходит на том же уровне что и обработка данных, что уменьшает количество ошибок.

Приложения Dash можно разделить на два основных компонента:

  • Макет — внешний вид приложения.
  • Интерактивность — Javascript-подобные ответы на вводимые пользователем данные.
Компонент макет состоит из дерева «компонентов», которые содержаться в dash_html_components. Например, блоков Div.
dash_html_components имеет компонент для каждого html тэга. html.H1(children='Hello Dash') компонент генерирует HTML элемент:
<h1>Hello Dash</h1>

Не все компоненты фреймворка являются HTML компонентами. dash_core_components генерирует более высокоуровневые элементы и интерактивные элементы, используя связку JS, HTML, CSS и React.Js., к таким элементам относятся, например dcc — объединение графических элементов.

Каждый компонент описывается полностью через атрибуты ключевых слов. Dash является декларативным: в первую очередь описывается приложение через эти атрибуты.

Интерактивность в фреймворке представлена функциями обратного вызова, реализованные через декораторы. Пример такой функции представлен на Рисунке 1.  Декоратор в качестве аргумента принимает два типа: Input и Output, в свою очередь первым аргументом этих элементов является Id элемента, с которым происходит взаимодействие, вторым — ключ. В качестве входных аргументов, как правило идут данные с элементов с которыми взаимодействует пользователь, что-то выбирает, вводит, и т.п. Декоратор получит эти данные обработает, и передаст в функцию, которая выполнит необходимые вычисления и вернет объект Dash, строку, число и т.п. Это значение будет помещено в элемент, id которого указано в декораторе для Output.

 

Рисунок 1. Функция обратного вызова

 

Подводя итог можно сказать, что Dash имеет большую функциональность благодаря этому он уже используется в крупных проектах несмотря на то, что он появился не так давно.

Как уже было сказано выше, Dash использует Flask как базу для создания веб-приложения. В связи с этим появляется вопрос: возможно ли использовать такой удобный инструмент как Dash, с другими фреймворками. Ответ: да. Рассмотрим для примера фреймворк Django. Есть несколько решений, схожих во своей сути и имеющие только разный уровень абстракции. Основная же суть всех этих решений заключается в следующем:

Конечные точки HTTP(HTTPS), предоставляемые приложением Dash, сопоставляются с конечными точками Django, а приложение встраивается в веб-страницу с помощью тега шаблона. На одной странице можно использовать несколько приложений Dash.

Подмножество внутреннего состояния приложения Dash может сохраняться как стандартный экземпляр модели Django, и приложение с этим внутренним состоянием затем доступно по его собственному URL-адресу. Затем это может быть встроено в одну или несколько страниц таким же образом, как описано выше для приложений без состояния.

Кроме того, предусмотрена расширенная версия обратного вызова Dash, предоставляющая доступ к обратному вызову текущему пользователю, текущему сеансу, а также экземпляру модели, связанному с внутренним состоянием приложения.

В итоге, сочетание одного из самых популярных на данный момент веб-фреймворка и гиб

Сочетание более функционального фреймворка Django чем Flask и библиотекой Dash, предоставляющей гибкие возможности по созданию интерактивной графики, упрощает процесс разработки, и дает обширные возможности для создания приложений, где нужна инфографика. 

 

Список литературы:
1. Elias Dabbas. Interactive Dashboards and Data Apps with Plotly and Dash // Harness the power of a fully-fledged frontend web framework in Python.: Published Packt Publishing 2021.