HTMX-Powered Django Admin Enhancement
Project description
django-htmx-admin
HTMX-Powered Django Admin Enhancement
A drop-in enhancement package that adds HTMX-powered interactions to Django Admin without requiring developers to rewrite their admin classes.
Screenshots
Inline Cell Editing
Modal Forms
Toast Notifications
Table with HTMX Actions
Features
- Inline Cell Editing — Click any cell to edit in place
- Modal Forms — Add/Edit records in popup modals
- Instant Filters — Filter results without page reload
- Smooth Deletion — Delete with confirmation, row fades out
- Toast Notifications — Success/error messages as popups
- AJAX Pagination — Navigate pages without reload
Requirements
- Python 3.8+
- Django 4.0+
- django-htmx 1.14.0+
Installation
pip install django-htmx-admin
Add to your INSTALLED_APPS:
INSTALLED_APPS = [
...
'django_htmx',
'htmx_admin',
...
]
Add the middleware:
MIDDLEWARE = [
...
'django_htmx.middleware.HtmxMiddleware',
'htmx_admin.middleware.HtmxMessageMiddleware',
...
]
Usage
# admin.py
from django.contrib import admin
from htmx_admin import HtmxModelAdmin
from .models import Product
@admin.register(Product)
class ProductAdmin(HtmxModelAdmin):
list_display = ['name', 'price', 'stock', 'category']
# New HTMX features:
list_editable_htmx = ['price', 'stock'] # Fields that can be edited inline
list_filter_htmx = ['category'] # Filters that update without reload
modal_fields = ['name', 'description', 'price'] # Fields to show in modal form
Configuration Options
HtmxModelAdmin Attributes
| Attribute | Type | Description |
|---|---|---|
list_editable_htmx |
list[str] | Fields that can be edited inline |
list_filter_htmx |
list[str] | Filters that update without reload |
modal_fields |
list[str] | Fields to show in modal form |
htmx_enabled |
bool | Master toggle (default: True) |
toast_messages |
bool | Show toast notifications (default: True) |
Admin Theme Support
django-htmx-admin automatically detects and adapts to your admin theme:
- Default Django Admin — Full support out of the box
- Grappelli — Automatic detection and themed templates
The package auto-detects which theme is installed and uses the appropriate templates and styling.
How It Works
django-htmx-admin uses HTMX to enhance Django Admin with partial page updates:
- Inline Editing: Clicking an editable cell sends an HTMX GET request for the edit form, then POST to save.
- Modal Forms: Add/Edit buttons trigger HTMX requests that load forms into a modal overlay.
- Deletions: Delete buttons send HTMX DELETE requests and animate row removal.
- Toast Messages: Server responses include HX-Trigger headers that display toast notifications.
Middleware
HtmxMessageMiddleware
Converts Django's messages framework messages to HTMX triggers for toast notifications.
HtmxRedirectMiddleware (optional)
Converts redirect responses to HX-Redirect headers for HTMX requests.
HtmxVaryHeaderMiddleware (optional)
Adds HX-Request to the Vary header for proper caching.
Mixins for Custom Views
You can use the provided mixins in your own views:
from htmx_admin.mixins import HtmxResponseMixin, HtmxFormMixin
class MyView(HtmxResponseMixin, View):
def post(self, request):
# Do something
return self.htmx_response(
status=204,
showMessage={'level': 'success', 'message': 'Done!'}
)
class MyFormView(HtmxFormMixin, FormView):
form_class = MyForm
template_name = 'my_form.html'
Template Tags
{% load htmx_admin_tags %}
{# Generate edit URL #}
{% htmx_edit_url object 'price' %}
{# Generate delete URL #}
{% htmx_delete_url object %}
{# Generate modal URL #}
{% htmx_modal_url opts 'add' %}
{% htmx_modal_url opts object.pk %}
{# Add toast container #}
{% toast_container %}
{# Add modal container #}
{% modal_container %}
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - see LICENSE file for details.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_htmx_admin-1.0.3.tar.gz.
File metadata
- Download URL: django_htmx_admin-1.0.3.tar.gz
- Upload date:
- Size: 45.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ce6cbcbe62aea7a08d7edaa888c8f6c7be9bb81058c281d3918c4ae7aaa2eaa
|
|
| MD5 |
0f33668c71cc596ffbdfb94f6f40c655
|
|
| BLAKE2b-256 |
5cd83b9f95d6b541fa4a794d91569e17bd8274c71f79e8945377a13d92f34770
|
File details
Details for the file django_htmx_admin-1.0.3-py3-none-any.whl.
File metadata
- Download URL: django_htmx_admin-1.0.3-py3-none-any.whl
- Upload date:
- Size: 47.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
608ab52ac6d156464308856ae3c7079d0de29da2c663f73509166b6bb39772f4
|
|
| MD5 |
921ae28fc52475b5ce4854ebdc59bca1
|
|
| BLAKE2b-256 |
92dbb20613e676f586c43357fdebefb0bc18f83d5565179fba093ed23bd7c2ca
|