django-htmx
clerk
Our great sponsors
django-htmx | clerk | |
---|---|---|
18 | 8 | |
1,392 | 34 | |
- | - | |
8.5 | 8.6 | |
11 days ago | 3 days ago | |
JavaScript | Python | |
MIT License | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
django-htmx
- Django + Htmx package for simple integration
-
Disabling HTMX Urls
If you don't already, you should use django-htmx. This will allow you to check if the request was made with HTMX. You can then do something like this:
-
HTMX and Wagtail
To make things easier, install the django-htmx package. Then, in your Page model's serve(), you can do things like if request.htmx: and return an HTML snippet instead of the full page in that case.
-
Htmx
The great thing about HTMX is it fits really nicely with templated server-rendered frameworks like Django.
You can have a page with a list of items. The page is one template, and it includes a sub-template which is just the
- items. Then you have a separate view for "get list fragment" which just returns the updated/sorted/filtered
- . If you toggle the ordering, or filter the list, HTMX will automatically call the fragment renderer and replace just the
- items, without reloading the page.
See this example: https://github.com/adamchainz/django-htmx/blob/8054f049f53f0...
This approach solves the common interactivity use-cases requiring JS in a server-rendered app, without having to write any JS, and without having to build a REST API. Instead you just render HTML, which your framework is excellent at.
-
Building a fullstack app with Flask and HTMx
If you use django-htmx, it's pretty simple to get the "this HTTP request came from HTMX" flag and branch accordingly in your view. The docs give a simple example of the logic here:
https://django-htmx.readthedocs.io/en/latest/middleware.html...
The examples give a fleshed-out version: https://github.com/adamchainz/django-htmx/blob/main/example/...
Though that's very slightly different than how I described it above, but it's basically the same idea; in this case you commonize the `main` block between the two contexts.
-
Django Contrib Messages + HTMX ?
HTMX has a HX-Trigger response header that enables you to trigger events in the browser that Javascript code can listen for. Assuming you already have Django-HTMX library set up, you could write a middleware like this:
-
What are your favorite 3rd party packages that you often use with Django?
Nice. I've written some less complete, less consistent variant of this a couple times now. That alone may be worth taking the dependency.
-
Is HTMX a Django-supported equivalent of Rails Hotwire / Turbo?
Full URL for django-htmx: https://github.com/adamchainz/django-htmx (creator here)
-
Frontend with Django
I think it's fair to clarify that Adam Johnson (aka adamchainz on Reddit and GitHub) didn't create HTMX but did write the django-htmx app to make it easier to use HTMX in Django.
-
Django and hx-delete request verb
django-htmx also comes with it's own version of HttpResponseHtmxRedirect (called HttpResponseClientRedirect).
clerk
- Django projects + source code
-
Dynamic Forms with Django
Example view using htmx here
-
How to prepopulate child form with parent id?
You can also pass it into a form, which seems like more work for little benefit (example).
-
Guides or examples of useful Django + HTMX patterns?
I've just started experimenting with using HTMX with Django. It's been fucking rad so far, I've drunk the Kool-Aid perhaps, but I'm still fumbling around for the best way to achieve certain behaviors. If anyone has general advice or a link to a guide or some example code for a non-trivial app they can share that would be cool.
-
Do you guys know any examples of uploading file to DRF backend?
https://github.com/AnikaLegal/clerk/blob/develop/app/core/views.py#L14
-
Testing strategy for DRF?
unittest vs pytest is really a personal style decision, I like pytest better personally because it gives you quick access to useful fixtures like `client` or `monkeypatch`. Here's an example test using the client fixture to simulate a post request.
-
Logging in production?
If you're running your apps in a Docker container and writing logs to a file then you might need to use a volume to ensure that the logfiles are persisted to the host server (ie the logs don't dissapear when the container dies). Alternatively you can use a log aggregation service like Papertrail (below)
-
Django on Docker
building an image in github actions, testing it, and pushing it to Docker Hub (private repo) (yaml)
What are some alternatives?
django-unicorn - The magical reactive component framework for Django ✨
Sentry - Developer-first error tracking and performance monitoring
htmx - </> htmx - high power tools for HTML
django-survey - A Django survey app
django-tailwind-alpine-htmx - Simple Task app using Django, Tailwind CSS, Alpine.js and HTMX
taiga-back - [Moved to: https://github.com/taigaio/taiga-back]
reactor - Phoenix LiveView but for Django
django-tailwind - Django + Tailwind CSS = 💚
viewflow - Reusable workflow library for Django
htmx-python-course - Student details, source code, and more for our HTMX + Flask: Modern Python Web Apps, Hold the JavaScript course.
turbo-django - Unmaintained // An early stage integration of Hotwire Turbo with Django
jinja_partials - Simple reuse of partial HTML page templates in the Jinja template language for Python web frameworks. #pypackage