This repo is a rough-and-ready compilation of the patterns I’m using and developing when writing Django projects that use htmx.
The docs are intended to be viewed on GitHub: https://github.com/spookylukey/django-htmx-patterns/ and the code can be run locally or on repl.it (see below)
My aims are to document and share:
- The basic patterns and control flow needed
- Some enhancements we can make with a few utilities
The code presented depends only on Django and htmx, unless otherwise noted. I wont be packaging it up as a library. It is instead being released into the public domain, and you are encouraged to copy-paste it for your own needs. (See the “Approach” docs for why).
There are some Django packages that provide shortcuts for some of the things mentioned here, such as django-htmx, but I won’t be using any of them for the sake of clarity.
- Approach
- Base template
- Headers
- Post requests
- Partials using separate templates
- Separate partials with a single view
- Inline partials
This is a work in progress, I’ll try to keep it up to date. PRs welcome.
- Combined vs separate view functions
- Patterns for use with django-functest
In the code folder is a demo app which has full working examples of everything in the docs. You can see it live on repl.it at https://django-htmx-patterns.spookylukey1.repl.co and you can fork it from https://replit.com/@spookylukey1/django-htmx-patterns to play around with the code.
To install locally, use a virtualenv, and then either use poetry or see the code/requirements.txt file for pip.
Your feedback is very welcome! Star this repo if you like it, and please share ideas on discussions.
Some other good htmx resources:
- How to use htmx in Django - tutorial blog post
- django-htmx - utility library with helpful docs
- django-htmx-fun - example application with Django/htmx
- django-siteajax - has some similar ideas to this repo
If you liked this repo, you might also be helped by some of my other resources: