Skip to main content

Django use of plotly dash apps through template tags

Project description

django-plotly-dash

Expose plotly dash apps as Django tags. 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-dash

This 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 at https://readthedocs.org/projects/django-plotly-dash

Installation

First, install the package. This will also install plotly and some dash packages if they are not already present.

pip install django_plotly_dash

Then, just add django_plotly_dash to INSTALLED_APPS in your Django settings.py file

INSTALLED_APPS = [
    ...
    'django_plotly_dash.apps.DjangoPlotlyDashConfig',
    ...
    ]

Demonstration

The source repository contains a demo application. To clone the repo and lauch the demo:

git clone https://github.com/GibbsConsulting/django-plotly-dash.git

cd django-plotly-dash

./make_env                # sets up a virtual environment for development
                          #   with direct use of the source code for the package

./prepare_demo            # prepares and launches the demo
                          #   using the Django debug server at http://localhost:8000

Usage

To use existing dash applications, first register them using the DjangoDash class. This replaces the Dash class of the dash package.

Taking a very simple example inspired by the excellent getting started documentation:

import dash
import dash_core_components as dcc
import dash_html_components as html

from django_plotly_dash import DjangoDash

app = DjangoDash('SimpleExample')

app.layout = html.Div([
    dcc.RadioItems(
        id='dropdown-color',
        options=[{'label': c, 'value': c.lower()} for c in ['Red', 'Green', 'Blue']],
        value='red'
    ),
    html.Div(id='output-color'),
    dcc.RadioItems(
        id='dropdown-size',
        options=[{'label': i, 'value': j} for i, j in [('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')])
def callback_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')])
def callback_size(dropdown_color, dropdown_size):
    return "The chosen T-shirt is a %s %s one." %(dropdown_size,
                                                  dropdown_color)

Note that the DjangoDash constructor requires a name to be specified. This name is then used to identify the dash app in templates:

{% load plotly_dash %}

{% plotly_item 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 main urls.py file; any views.py would also be sufficient.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-plotly-dash-0.4.2.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

django_plotly_dash-0.4.2-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file django-plotly-dash-0.4.2.tar.gz.

File metadata

File hashes

Hashes for django-plotly-dash-0.4.2.tar.gz
Algorithm Hash digest
SHA256 684157df44755be2d0b1f4a8f1239f08c7f19488a2bf77a17843c7128e98a689
MD5 2eb260436312f08411c266d351122f3a
BLAKE2b-256 2e4760520c24556184b894e51d52393b356856ef4e41d895788380c7f1c46ce5

See more details on using hashes here.

Provenance

File details

Details for the file django_plotly_dash-0.4.2-py3-none-any.whl.

File metadata

File hashes

Hashes for django_plotly_dash-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7a651dc82e9c73e5618e9c6ca4154c23de5e482e201fd1902597e1e20af8293f
MD5 26540c6bae8fae8e6e441b81a1199c06
BLAKE2b-256 f1739c8b71e9e3d3930a86fc15ca06d4cf2a4a5a94a2aae99cfc4dc7ad5d1b7d

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page