django-plotly-dash
django-plotly-dash copied to clipboard
How to query database and pass it to the `plotly_app`
Goal
I am trying to render a Dash app through a template that takes input from the view after calling the URL (that's how Django works).
The main problem I face is how to pass data through this logic.
Context
- The database is a Redshift instance whose schema is mapped to a Django model
- The user will access their
id_projectdashboard when visitinghttps://website.com/dashapp/<id_project>
Implementation
I am considering two strategies:
- Query the database from the view through the model and cache it
- Get the
data.csvfrom an s3 paths3://domain.com/projects/<id_project>
With option 1, I am stuck on the concept of passing the data. All I have found online concerns the state, but I don't want to use the state because the full dataset of the id_project (~20MB) should be available during the session.
With option 2, I am stuck on passing the id_project from the view to the template captured within the Dash app.
Beyond solving these doubts, any new approaches are welcomed
Thanks in advance for the help!
@jsulopzs if you have a lot of data, then one strategy is to manage the data within Django (eg as part of the ORM, or leveraging a cache) and then accessing it during (extended) callbacks.
Thanks for the response @GibbsConsulting. I'll take the caching approach using Redis and call the id_project from the user's dropdown selection.
Although I see a caveat:
To pass the id_project options in the dropdown, I need only to display the ones associated with the logged-in username.
I am passing the username through initial_arguments, but I wouldn't say it's a safe approach since any user can inspect the HTML and change the username value to access anyone's project.
Would the view decorator @login_required prevent unauthorized access in the case of using initial_arguments?
see: https://django-plotly-dash.readthedocs.io/en/latest/access_control.html