Wildfish logo
Wildfish logo

GET IN TOUCH

21 December 2023DevTeam

Introducing Django Dashboards

  • dashboards
  • data
  • django
  • django-dashboards
  • htmx
  • oss
Introducing Django Dashboards

What is “Django-Dashboards”?

Django-Dashboards is an open source Python package developed by Wildfish. The goal of the library is to allow developers to create data-driven dashboards in a "Django-like" way, and produce production ready applications quickly.

Django-Dashboards follows a Django Forms like API to make it familiar to any Django developer and integrates closely with Django's ORM. Developers create various components, such as tables and charts, which are added to a “dashboard” to be presented on screen.

On the frontend Django-Dashboards supports the use of third-party libraries, such as Plotly, to display the data in a visually pleasing way. All layouts and styles are fully customisable in code or by simply changing base templates to give the developer full control over the look and feel.

Why Did We Create Django-Dashboards

Over the past few years we have had a number of clients come to us requiring custom dashboards for displaying their large, complex and ever updating datasets. We initially programmed these individually but soon realised that a lot of the requirements overlapped and we’d be better off using a shared library.

In our initial search we found that while there are many tools in the Python ecosystem for building Dashboards - Dash, Streamlit etc. there weren’t any which matched our specific needs.

Since we are a Django consultancy we decided to build one ourselves centred around our favourite framework Django. The goal was to leverage all the advantages Django has to offer while reducing the amount of time and boilerplate code needed to create a dashboard.

We started with 6 key requirements:

  1. It had to integrate with Django, having an API that would be familiar to a Django developer.
  2. It should offer hooks into the Django ORM allowing the flow of data from model to component to dashboard.
  3. Any dashboard code should blend seamlessly with Django’s core features for: authentication, MVC, permissions, templates.
  4. It needed to provide components which could display data in: chart, table and textual format out of the box with the flexibility to add more.
  5. It should allow layouts, styles and designs to be quickly and easily customised to fit individual client requirements.
  6. It should minimise the need for frontend skills, allowing developers to create dashboards without the need to touch any front end code.

We decided to build the initial MVP version of Django-Dashboards in partnership with one of our clients over a 6 month period.

The client was looking to take their telematics data and display it in a variety of charts and tables, allowing their engineers to monitor the data and quickly flag any current or potential issues arising from it. The client came with an expansive dataset and wanted a number of individual dashboards to cover specific areas of the data to be monitored. They had a firm idea on which dashboards were required but not exactly what each component within the dashboard should be. It was decided that this should be something that was built up over the project as and when they identified them.

These ever evolving dashboards not only gave us the platform to build and test the library but also the opportunity to refine our thoughts and ideas on the best approaches to create multiple dashboards within a single web app.
Working closely with the clients engineers also helped identify a number of features which we had not initially considered but were valuable additions to the library.

The final version of the library, which we released as the open source project Django-Dashboards, has the following features out the box:

Django Forms-like API

It follows a Django Forms-like API. This makes the process familiar to those who've used Django before, and simpler for beginners.

Ready-to-use, no need for front-end code

Its built-in templates are fully customisable and enhanced with HTMX, eliminating the need for advanced front-end skills. Django-Dashboards also bundles with a number of additional HTML components to enhance the visuals.

Multiple components

Several built-in component types are available that you can use to build your dashboard:

In-built Permission system

Access permissions can be easily applied, allowing you to restrict dashboard access on an account-by-account basis.

If you are after more granular control there is also the option to restrict individual components within a dashboard. This provides the flexibility to decide what's shown on a dashboard and to whom. This helps create tailored dashboard views for different user roles within an organisation.

Automatic URL routing

Django-Dashboards included its own Django URL routing and custom Django View, making it easy for novice developers to get started quickly.

Advanced layout control

Dashboard layouts can be defined in code within the Dashboard definition itself. This gives developers ultimate control over where each component sits within a dashboard, without needing to touch front-end code.

Get started with Django-Dashboards

It’s easy to get started with Django-Dashboard:

You must accept cookies and allow javascript to view and post comments
Wildfish logo

GET IN TOUCH!

We really are quite an approachable bunch! Simply give us a call or email. Alternatively if you’d prefer, drop into the office for a chat!