Extensions for using Django with htmx.
Python 3.6 to 3.9 supported.
Django 2.2 to 3.2 supported.
Are your tests slow? Check out my book Speed Up Your Django Tests which covers loads of best practices so you can write faster, more accurate tests.
Install with pip:
python -m pip install django-htmx
Add the middleware:
MIDDLEWARE = [ ..., "django_htmx.middleware.HtmxMiddleware", ..., ]
See the example app in the example/
directory of the GitHub repository for usage of django-htmx.
This middleware attaches request.htmx
, an instance of HtmxDetails
.
This class provides shortcuts for reading the htmx-specific request headers.
True
if the request was made with htmx, otherwise False
. This is based on the presence of the HX-Request
header.
This allows you to switch behaviour for requests made with htmx like so:
def my_view(request):
if request.htmx:
template_name = "partial.html"
else:
template_name = "complete.html"
return render(template_name, ...)
The current URL of the browser, or None
for non-htmx requests. Based on the HX-Current-URL
header.
The user response to hx-prompt if it was used, or None
.
The id
of the target element if it exists, or None
. Based on the HX-Target
header.
The id
of the triggered element if it exists, or None
. Based on the HX-Trigger
header.
The name
of the triggered element if it exists, or None
. Based on the HX-Trigger-Name
header.