Django Insights

Customizing

The URLs #

Include the URLs under any path. The namespace must be insights:

(path("stats/", include("django_insights.urls", namespace="insights")),)

These names are available for reverse() and {% url %}:

Name Path Shows
insights:insight_dashboard / counters and gauges of all apps
insights:insight_app app/<uuid>/ the charts of one app
insights:insight_chart charts/<id>/ the PNG of one chart

The chart responses carry an ETag and are private, so a browser only loads a chart again when it changed. The mode comes from a theme cookie that the dashboard sets, INSIGHTS_DEFAULT_THEME otherwise.

Templates #

Override a template by adding one with the same name to a templates folder of your project that comes before the app, for example templates/insights/dashboard.html with DIRS: [BASE_DIR / "templates"].

Template Used for
insights/base.html the page: sidebar, header, theme switch
insights/dashboard.html the dashboard, fills the content block
insights/app.html the page of an app, fills the content block
insights/_stat.html one counter or gauge
insights/_bucket.html one chart with its data
insights/_empty.html the page when nothing is collected yet

A small dashboard of your own:

{% extends "insights/base.html" %}
{% load insight_stat %}
{% block content %}
  {% for counter in counter_list %}
    <p>{{ counter.label }}: {{ counter.value }} {{ counter.trend|sparkline }}</p>
  {% endfor %}
{% endblock content %}

Template tags #

Use them in your own pages too:

Tag Does
{% chart bucket %} from insight_chart an <img> of the chart of a bucket, loaded lazily
values|sparkline from insight_stat an inline SVG line of a trend, nothing with fewer than two values
values|trend from insight_stat the percentage change of the last value against the one before it
{% load insight_chart %}
{% chart bucket %}

The chart tag needs the URLs above, and a user who may see the dashboard.

Static files #

The stylesheet of the chosen style, the scripts and the Geist font live in the package under insights/. Run collectstatic for production, and serve the files like the rest of your static files.