Django Admin Grove
A forest-green theme for Django admin with rounded surfaces, light and dark modes, responsive layouts, and a print stylesheet. No JavaScript, external fonts, models, or migrations are required. Uses Django's existing theme toggle and branding.
Installation
Install directly from Codeberg:
python -m pip install git+https://codeberg.org/fsbraun/django-admin-grove
Add Grove before Django's admin app (including custom AdminConfig subclasses):
INSTALLED_APPS = [
"django_admin_grove",
"django.contrib.admin",
# ...
]
Use Django's app template loader (APP_DIRS = True, or the explicit
django.template.loaders.app_directories.Loader) and staticfiles as usual.
Run python manage.py collectstatic for production deployments.
No URL configuration or database changes are needed. Django CMS is optional.
Supports Django 5.2 and 6.0; use a Python version supported by your Django release.
Customization
Set admin.site.site_header, site_title, and index_title normally, or override
admin/base_site.html in your project. Grove leaves Django's branding blocks intact.
Project templates should extend admin/base.html and keep block.super when
replacing the responsive block.
Load project CSS after Grove using its grove_styles block:
{% extends "admin/base.html" %}
{% load static %}
{% block grove_styles %}
<link rel="stylesheet" href="{% static 'myproject/admin.css' %}">
{% endblock %}
Override the --theme-* CSS variables for colors and surfaces. Match Grove's
html[data-theme="light"] and html[data-theme="dark"] selectors when customizing
both modes. System preferences apply when Django selects automatic mode.
The --dca-primary and --dca-secondary variables follow the active palette.
Printing uses A4 landscape and hides admin controls. Use .report-screen-only
to hide custom controls in print and .report-print-only for print-only context.
Domain-specific selectors and branding belong in the consuming project.
Development
python -m pip install -e .
python -m django test tests --settings=tests.settings
python -m pip install build
python -m build
Tests run against plain Django admin with an in-memory database.
Publishing
Enable Actions in the Codeberg repository settings and make a runner with the
codeberg-local label available. Add a PyPI API token as the Actions secret
PYPI_API_TOKEN.
Update the version in pyproject.toml, then publish a Codeberg release with a
matching tag (for example, 0.1.0 or v0.1.0). The publication workflow checks
the version, runs the tests, builds and validates the wheel and source
distribution, and uploads both to PyPI.
Metadata
Release files for django-admin-grove 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| django_admin_grove-0.1.0.tar.gz | 9.3 kB | Without provenance | Details for django_admin_grove-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| django_admin_grove-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for django_admin_grove-0.1.0-py3-none-any.whl |
Total release size: 17.0 kB
Release files / django_admin_grove-0.1.0.tar.gz
| Download URL | django_admin_grove-0.1.0.tar.gz |
|---|---|
| Size | 9.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
790ee5c23b24fb9581f374c4f4fe1072299b0468c4ed077467d990361cfc5eda
|
|
BLAKE2b-256 checksum How to use checksums |
71601efb41166c7557fdc33d1e6f6cd45af381ea92ab297303687107f892fa2c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.16
|
Release files / django_admin_grove-0.1.0-py3-none-any.whl
| Download URL | django_admin_grove-0.1.0-py3-none-any.whl |
|---|---|
| Size | 7.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ff6d878fa00c6cf5edb1c4b0367d636b7179f504c0d46eff188488817a8d3f10
|
|
BLAKE2b-256 checksum How to use checksums |
94bb872e34d855541f97d8d76798d596e84895ca33b1a426dd13027a5db9c3e1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.16
|
Security for django-admin-grove 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.