У меня есть многостраничное приложение da sh, которое я хочу использовать вместо Django с библиотекой django -plotly-da sh. Структура основного приложения da sh:
app.py
import dash
import dash_bootstrap_components as dbc
from django_plotly_dash import DjangoDash
app = DjangoDash('dash_integration_id', suppress_callback_exceptions=True)
Файл индексной навигации приложения da sh:
index.py
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output, State
import dash_bootstrap_components as dbc
from django_dash.app import app
# import all pages in the app
from django_dash.apps import app1, app2
# embedding the navigation bar
app.layout = html.Div([
dcc.Location(id='url', refresh=False),
html.Div(id='page-content'),
])
@app.callback(Output('page-content', 'children'),
[Input('url', 'pathname')])
def display_page(pathname):
if pathname == '/app1/':
return app1.layout
else:
return app2.layout
if __name__ == '__main__':
app.run_server(8050, debug=True)
Я вызываю приложение Djann go da sh в app1. html
app1 . html
{%load plotly_dash%}
<!DOCTYPE html>
<html>
<head>
....
</head>
<body>
<main>
{% plotly_app name='dash_integration_id' ratio=0.45 %}
</main>
</body>
</html>
Мой url.py в django приложении:
urls.py
from django.contrib import admin
from django.conf.urls import url
from django.urls import path, include
from django.views.generic import TemplateView
from django.conf import settings
from django.conf.urls.static import static
# Loading plotly Dash apps script
import django_dash.index
urlpatterns = [
url('^app1$', TemplateView.as_view(template_name='app1.html'), name="app1"),
url('^django_plotly_dash/', include('django_plotly_dash.urls')),
path('', TemplateView.as_view(template_name='app1.html')),
url('^app2$', TemplateView.as_view(template_name='app2.html'), name="app2"),
url('^django_plotly_dash/', include('django_plotly_dash.urls')),
path('', TemplateView.as_view(template_name='app2.html')),
]
На обеих страницах я получаю макет app2. Но как я могу различать два приложения python, чтобы вызывать их на каждой странице html, поскольку идентификатор, который получает DjangoDa sh, предназначен для запуска всего приложения?
Я также посоветовал онлайн-документацию of django -plotly-da sh (https://django-plotly-dash.readthedocs.io/en/latest/), чтобы получать информацию о различных параметрах, которые получают функцию sh DjangoDa (например, da, slug), но безуспешно.