Шаблон веб-сайта Flask, который включает в себя место для блогов, приложений Dash и блокнотов Jupyter.
Я хотел создать свой собственный веб-сайт, который позволил бы мне вести блог, демонстрировать свои информационные панели и запускать блокноты Jupyter.
Я узнал, как создать само приложение Dash, но не смог найти ни одного, описывающего все три. Это то, что я намерен предоставить сегодня.
Код шаблона находится здесь, и с помощью этого шаблона я создал свой веб-сайт.
Введение
Я изначально разработал этот веб-сайт, написанный на Dash, только панель инструментов, показанная ниже.
Эти информационные панели были созданы с использованием Dash и Plotly.
К сожалению, когда я понял, что не могу отображать сообщения в блоге с уценкой, мне пришлось искать другой способ создания веб-сайта.
Затем мне пришлось начать гуглить и найти пример, который отображает уценку и использует преимущества Dash для информационных панелей, но я не смог его найти.
Вместо этого я нашел фантастическую статью (ссылка) Джеймса Хардинга, которую я использовал для настройки основного веб-сайта и добавил несколько трюков, чтобы выровнять информационную панель с веб-сайтом.
Структура папок
Весь этот код и настройка предоставляются здесь. Базовая структура такова:
. |-- virtualenv/ |-- main/ | |-- content | | |-- posts | | | `-- about_website.md | |-- dash | |-- data | |-- static | |-- templates | |-- __init__.py |-- app.py |-- Dockerfile |-- .pylintrc `-- requirements.txt
В __init__.py
настроен фляжный сервер и зарегистрированы плоские страницы и компоненты панели мониторинга.
Веб-сайт разделен на статические файлы и HTML-файлы. Изображения, которые отображаются на веб-сайте, или файлы CSS и javascript, находятся в статической папке, а файлы HTML будут в папке шаблонов.
Регистрация фляжного приложения
Приложение будет вызываться из app.py
, который вызывает функцию create_app()
, расположенную в файле __init__.py
.
В этой функции первое, что я сделал, это настроил сервер и определил, где статические файлы дают уникальные характеристики моего веб-сайта.
Примечание: без добавления static_url_path
в качестве параметра сервер Flask может не знать, где искать файлы CSS и js. Если вы столкнетесь с ошибкой 404 при вызове этих файлов, это может быть вашей проблемой.
После регистрации сервера Flask теперь я могу добавлять компоненты тире и страницы уценки Flatpages.
Добавление дашборда
В __init__.py
функция register_dashapps
указана ниже.
Одним из основных отличий между обычным Dash и этой функцией является дополнительный контекст фляги. Дашборд теперь можно запустить через флягу app_context()
. Хотите узнать подробности о том, почему добавлен этот дополнительный шаг? Вот ссылка.
Добавление блогов
Большинство сообщений в блогах хранят свой контент в реляционной базе данных, что является общим подходом к хранению содержимого сообщений.
Между тем, мои сообщения в блоге простые и «плоские» и взяты из файлов в исходном коде. Flatpages идеально подходит для этого варианта использования и быстро добавляет средство визуализации в конфигурацию приложения flask, которое будет переводить или перекодировать уценку в HTML.
Кроме того, нам нужно будет зарегистрировать маршруты веб-сайтов, которые указывают на сообщения.
Остальной код блога подробно объяснил Джеймс Хардинг.
Добавление блокнотов Jupyter
Последний шаг — добавление блокнотов Jupyter.
Прежде чем мы сможем добавить перенаправление в файл __init__.py
, нам нужно убедиться, что к блокноту Jupyter можно получить доступ с веб-сайта. Я использовал nbviewer, что позволило мне бесплатно разместить этот блокнот Jupyter. Затем этот URL-адрес можно использовать в перенаправлении (‹URL›), как в примере ниже.
Я надеюсь, что эта статья прольет свет на объединение Flask, Dash и Jupyter Notebook в один красивый веб-сайт. Дайте знать, если у вас появятся вопросы.
Want to Connect? Updated from the original blog post at https://dutchengineer.org.