Как разработать концепцию веб-приложения (приборной панели) из Django с точки зрения структуры бэкэнда - PullRequest
0 голосов
/ 29 сентября 2019

Моя цель - создать панель управления на основе python / django, связанную с футболом, где пользователь может выбрать футбольную команду по своему выбору на боковой панели, а затем получить все связанные данные, отображаемые на панели мониторинга, взамен.Панель инструментов будет состоять в основном из простых фигур и более динамичных диаграмм (с использованием Plotly и т. Д.).Я прикрепил HTML-интерфейс, чтобы вы могли получить краткое представление о том, как он будет выглядеть.

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

Для ясности я вставил цифры в вопросы;).

Dashboard frontend

Шаблоны / Приложения

Поскольку веб-приложение будет содержать один основной сайт (= панель инструментов), я предпочитаю в основном работать с одним шаблоном (index.html, очевидно, помимо сайтов "about" и "blog", которые будут разделены приложениями),

[1.1] Есть ли веская причина, чтобы разделить боковую панель и панель инструментов на два шаблона?
[1.2] Или даже создать отдельный шаблон для каждой «части» панели мониторинга (например, один шаблон для каждого отдельного информационного контейнера)?

Просмотры

Как я понимаю из разных учебников / документов, вы обычно просто используете один файл views.py в веб-приложении.Я получу данные о футболе из внешнего API с помощью AJAX на событии "щелчок на боковой панели".
[2.1] Рекомендуете ли вы создавать отдельные функции просмотра для каждого информационного контейнера панели управления?
[2.2] Или это хороший совет - создавать меньше представлений, которые одновременно обрабатывают больше данных / больше информационных контейнеров?(Панель инструментов будет содержать около 400 переменных).

Urls

Я не уверен, как управлять всеми функциями.Поскольку пользователь всегда будет запрашивать один и тот же URL-адрес, мне придется сопоставить все функции просмотра с одним и тем же URL-адресом, независимо от того, какую команду он выберет (я не хочу, чтобы сайт перезагружался после выбора новой команды).Несмотря на то, что сами функции будут оставаться одинаковыми, кроме разных team_id для получения нужных данных из API.

При этом веб-приложение / панель мониторинга будет более или менее статичным в отношении нескольких сайтов и т. Д.Таким образом, я планирую всегда ссылаться на один и тот же URL, а не на / home / selectedteam.(кроме сайтов «О нас» и «Блог», очевидно).

[3] Любой подход, рекомендованный по этому вопросу?

Кэширование

Iпланировать внедрение надлежащей среды кэширования, поскольку вызовы API ограничены, и пользователи могут быстро переключаться между командами и поэтому снова и снова запрашивать одни и те же данные (данные вообще не меняются очень быстро).
[4] Есть ли какие-либо опасения по поводу реализации среды кэширования в таком проекте?

Остальное

[5] Как наилучшим образом реализовать вызовы API?Использовать AJAX в javascript и перенаправлять данные в представления Python или напрямую извлекать данные API в представлениях Python (я не хочу, чтобы пользователь перезагружал панель мониторинга каждый раз, когда он выбирает другую команду)?

Прямо сейчасМой подход заключается в получении идентификатора команды (атрибут html) через javascript всякий раз, когда пользователь нажимает на команду на боковой панели, и использует этот идентификатор через AJAX для выполнения вызовов API с представлением Django.

[6]Есть ли у вас какие-либо другие темы, которые следует учитывать при разработке инструментальных панелей на основе Django?(Я решил использовать подход, основанный на Python, для разработки веб-приложения, поскольку мне придется использовать Plotly и другие библиотеки для построения динамических диаграмм с использованием данных API).

Заранее спасибо за ваши ответы - очень признателен.

...