Интеграция Holoviz Panel и Django для создания веб-приложений Dashboard
Я ищу любой рабочий пример проекта Django, интегрированного с Panel Apps. В руководстве пользователя есть раздел, в котором даются советы по интеграции. Но я не могу заставить его работать.
Поделитесь, пожалуйста, любыми доступными ресурсами в Интернете, демонстрирующими интеграцию.
Код, который я пробовал, выглядит следующим образом (и его варианты) Фактическая бизнес-логика здесь не важна. Я хочу успешно интегрировать панели Panel Dashboards и Django.
# project structure:
# myproject/
# manage.py
# myproject/
# __init__.py
# settings.py
# urls.py
# wsgi.py
# app1/
# __init__.py
# apps.py
# views.py
# app2/
# __init__.py
# apps.py
# views.py
# myproject/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app1',
'app2',
'panel',
]
# myproject/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('app1/', include('app1.urls')),
path('app2/', include('app2.urls')),
]
# app1/apps.py
from django.apps import AppConfig
class App1Config(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'app1'
# app1/views.py
import panel as pn
from django.http import HttpResponse
def app1_panel(request):
# Create a simple Panel app
slider = pn.widgets.FloatSlider(start=0, end=10, name='Slider')
text = pn.widgets.StaticText(name='Slider Value')
@pn.depends(slider.param.value)
def update_text(value):
text.value = f"Slider value: {value:.2f}"
app = pn.Column(slider, text)
# Serve the Panel app
return HttpResponse(app.servable())
# app1/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.app1_panel, name='app1_panel'),
]
# app2/apps.py
from django.apps import AppConfig
class App2Config(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'app2'
# app2/views.py
import panel as pn
import altair as alt
import pandas as pd
from django.http import HttpResponse
def app2_panel(request):
# Create a simple Panel app with an Altair plot
df = pd.DataFrame({'x': range(10), 'y': [i**2 for i in range(10)]})
chart = alt.Chart(df).mark_line().encode(
x='x',
y='y'
).properties(
title='Square Function',
width=400,
height=300
)
altair_pane = pn.pane.Vega(chart)
app = pn.Column(
pn.pane.Markdown("# App 2: Square Function Plot"),
altair_pane
)
# Serve the Panel app
return HttpResponse(app.servable())
# app2/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.app2_panel, name='app2_panel'),
]
# manage.py (no changes needed)
# Requirements (update requirements.txt):
# Django
# panel
# altair
# pandas