Skip to main content

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

Inline Editing

Modal Forms

Modal Form

Toast Notifications

Toast Notifications

Table with HTMX Actions

Table 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:

  1. Inline Editing: Clicking an editable cell sends an HTMX GET request for the edit form, then POST to save.
  2. Modal Forms: Add/Edit buttons trigger HTMX requests that load forms into a modal overlay.
  3. Deletions: Delete buttons send HTMX DELETE requests and animate row removal.
  4. 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

django_htmx_admin-1.0.3.tar.gz (45.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_htmx_admin-1.0.3-py3-none-any.whl (47.0 kB view details)

Uploaded Python 3

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

Hashes for django_htmx_admin-1.0.3.tar.gz
Algorithm Hash digest
SHA256 2ce6cbcbe62aea7a08d7edaa888c8f6c7be9bb81058c281d3918c4ae7aaa2eaa
MD5 0f33668c71cc596ffbdfb94f6f40c655
BLAKE2b-256 5cd83b9f95d6b541fa4a794d91569e17bd8274c71f79e8945377a13d92f34770

See more details on using hashes here.

File details

Details for the file django_htmx_admin-1.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for django_htmx_admin-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 608ab52ac6d156464308856ae3c7079d0de29da2c663f73509166b6bb39772f4
MD5 921ae28fc52475b5ce4854ebdc59bca1
BLAKE2b-256 92dbb20613e676f586c43357fdebefb0bc18f83d5565179fba093ed23bd7c2ca

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page