Package: django-plotly-dash
django-plotly-dashExposeplotly dashapps asDjangotags. Multiple Dash apps can
then be embedded into a single web page, persist and share internal state, and also have access to the
current user and session variables.See the source for this project here:https://github.com/GibbsConsulting/django-plotly-dashThis README file provides a short guide to installing and using the package, and also
outlines how to run the demonstration application.More detailed information
can be found in the online documentation athttps://readthedocs.org/projects/django-plotly-dashAn online version of the demo can be found athttps://djangoplotlydash.comInstallationFirst, install the package. This will also install plotly and some dash packages if they are not already present.pip install django_plotly_dashThen, adddjango_plotly_dashtoINSTALLED_APPSin your Djangosettings.pyfileINSTALLED_APPS = [
    ...
    'django_plotly_dash.apps.DjangoPlotlyDashConfig',
    ...
    ]The application's routes need to be registered within the routing structure by an appropriateincludestatement in
aurls.pyfile. Note:django_plotly_dashis not a name of your application, it is referring to the inner namespace of this library. Please do not skip this step:urlpatterns = [
    ...
    path('django_plotly_dash/', include('django_plotly_dash.urls')),
]The name within the URL is not important and can be changed.For the final installation step, a migration is needed to update the
database:./manage.py migrateThe use of frames within
HTML documents has to be enabled by adding to thesettings.pyfile:X_FRAME_OPTIONS = 'SAMEORIGIN'Further configuration, including live updating to share application
state, is described in theonline documentation.DemonstrationThe source repository contains a demo application. To clone the repo and lauch the demo:gitclonehttps://github.com/GibbsConsulting/django-plotly-dash.gitcddjango-plotly-dash

./make_env# sets up a virtual environment for development#   with direct use of the source code for the package./prepare_redis# downloads a redis docker container#   and launches it with default settings#   *THIS STEP IS OPTIONAL*./prepare_demo# prepares and launches the demo#   using the Django debug server at http://localhost:8000UsageTo use existing dash applications, first register them using theDjangoDashclass. This
replaces theDashclass of thedashpackage.Taking a very simple example inspired by the excellentgetting starteddocumentation:importdashfromdashimportdcc,htmlfromdjango_plotly_dashimportDjangoDashapp=DjangoDash('SimpleExample')app.layout=html.Div([dcc.RadioItems(id='dropdown-color',options=[{'label':c,'value':c.lower()}forcin['Red','Green','Blue']],value='red'),html.Div(id='output-color'),dcc.RadioItems(id='dropdown-size',options=[{'label':i,'value':j}fori,jin[('L','large'),('M','medium'),('S','small')]],value='medium'),html.Div(id='output-size')])@app.callback(dash.dependencies.Output('output-color','children'),[dash.dependencies.Input('dropdown-color','value')])defcallback_color(dropdown_value):return"The selected color is%s."%dropdown_value@app.callback(dash.dependencies.Output('output-size','children'),[dash.dependencies.Input('dropdown-color','value'),dash.dependencies.Input('dropdown-size','value')])defcallback_size(dropdown_color,dropdown_size):return"The chosen T-shirt is a%s%sone."%(dropdown_size,dropdown_color)Note that theDjangoDashconstructor requires a name to be specified. This name is then used to identify the dash app in
templates:{% load plotly_dash %}

{% plotly_app name="SimpleExample" %}The registration code needs to be in a location
that will be imported into the Django process before any model or template tag attempts to use it. The example Django application
in the demo subdirectory achieves this through an import in the mainurls.pyfile; anyviews.pywould also be sufficient.Whilst this example allows for the direct use of existingDashapplications, it does not provide for the sharing or updating of
internal state. Theonline documentationprovides details on using these
and other additional features.DevelopmentThemake_envscript sets up the development environment, and pulls in the packages
specified in thedev_requirements.txtfile. Thecheck_codescript invokes the test suite (usingpytest) as well
as invokingpylinton both the package and the associated demo.