Текущий путь, /django_plotly_dash/app/test/, не соответствует ни одному из этих путей
У нас есть платформа, развернутая на Django, и мы хотели внедрить приборную панель, созданную с помощью plotly и dash, в существующее приложение Django, которое у нас есть. Я следовал некоторым руководствам и интегрировал приложение dashboard так, как это делали все, но всякий раз, когда я пытался перейти к url приложения, я получал следующее сообщение: Текущий путь, /django_plotly_dash/app/test/, не соответствует ни одному из этих путей.
Я создал приложение cars_dashboard.
settings.py:
MIDDLEWARE = [
'django_plotly_dash.middleware.BaseMiddleware'
]
INSTALLED_APPS = [
'django_plotly_dash.apps.DjangoPlotlyDashConfig',
'channels',
'channels_redis',
'cars_dashboard'
]
CRISPY_THEME_PACK = 'bootstrap4'
ASGI_APPLICATION = 'cars_dashboard.routing.application'
PLOTLY_DASH = {
'stateless_loader': 'cars_dashboard.dash_app.cars_dashboard',
'cache_arguments': False,
'serve locally': False
}
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
'hosts': [
('127.0.0.1', 6379),
],
},
},
}
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'django_plotly_dash.finders.DashAssetFinder',
'django_plotly_dash.finders.DashComponentFinder',
'django_plotly_dash.finders.DashAppDirectoryFinder',
]
PLOTLY_COMPONENTS = [
'dash_core_components',
'dash_html_components',
'dash_bootstrap_components',
'dash_renderer',
'dpd_components',
'dpd_static_support',
]
на главном сайте urls.py:
urlpatterns = [
path('django_plotly_dash/', include('django_plotly_dash.urls')),
path('cars_dashboard/', include('cars_dashboard.urls')),
]
cars_dashboard views.py
import django_plotly_dash
from django.shortcuts import render, HttpResponse
def home(request):
return render(request, 'cars_dashboard.html')
cars_dashboard urls.py
from django.urls import path
from . import views
from .dash_app import cars_dashboard
urlpatterns = [
path('', views.home, name='home'),
]
Третья строка в приведенном выше коде импортирует скрипт cars_dashboard.py, который содержит код для приборной панели и находится в ./cars_dashboard/dash_app/cars_dashboard.py
Хотя мне нужно реализовать приборную панель, но в процессе ее отладки я создал очень простую приборную панель, которая содержит только html div для простоты. cars_dashboard.py:
import dash_html_components as html
from django_plotly_dash import DjangoDash
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = DjangoDash('test', external_stylesheets=external_stylesheets)
app.layout = html.Div([
html.H1('Test Dashboard'),
])
В скрипте выше я удалил строку:
app.layout = html.Div([
html.H1('Test Dashboard'),
])
а затем запустил приложение и получил ошибку, что должен быть возвращен макет тире, что, конечно, означает, что это приложение доступно.
Я проверил модель StateApps в Django Admin и там создано приложение по имени 'test'. Но модель DashApps всегда пуста.
Я также попробовал понизить django_plotly_dash и dash до рекомендованных версий, но и там не получилось.
Моя текущая версия Django - 3.2.9, и я не могу перейти на другую версию, потому что это нарушит совместимость всего моего проекта. У меня также есть celery, реализованный в нем для работы бэкенда. Может ли это быть причиной такого поведения?