django-htmx
janet
django-htmx | janet | |
---|---|---|
18 | 79 | |
1,404 | 3,306 | |
- | 0.6% | |
8.6 | 9.4 | |
10 days ago | 2 days ago | |
JavaScript | C | |
MIT License | 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).
janet
-
Scriptable Operating Systems with Lua [pdf]
Seems like a perfect use-case for Janet. (https://janet-lang.org/) A fast minimal VM like Lua, but even more extensible than Lua by being a "Lisp" with macro and C extension capabilities. Not a true Lisp, it's very pragmatic and performance-oriented. But it keeps the good stuff.
-
Ask HN: A Lisp with Cargo/NPM like build system?
You might be looking for: https://janet-lang.org/
It comes with a build tool `jpm` which installs dependencies globally by default, but you can have it be installed in your project folder as well.
-
Babashka: Fast native Clojure scripting runtime
I like Clojure, but I never had any good opportunities to use it other than for a few small hobby projects. It is unfortunate that it is so huge with tons of dependencies and no simpler native implementation. I started looking at various LISPs and Schemes to find something lighter to use instead and ended up settling for Janet that I think is Clojure-like enough to be comfortable to use, but in a small native binary with no dependencies and can be embedded in other native programs. I am sure for big, real, projects that Clojure makes more sense, but for my hobby projects and scripts I do not think I will install it again. I am still happy for the things I learned from learning Clojure. It was a real eye-opener for an old OO-programmer.
https://janet-lang.org/
- Janet Language
- Why Fennel?
- Embeddable Common Lisp 23.9.9
-
Sharpscript: Lisp for Scripting
One might also check out Janet for quick scripting tasks.
https://janet-lang.org
-
Red Programming Language
Thanks!
I thought about another multiplatform, homoiconic, highly compact language: https://janet-lang.org/ (takes 803 kb on my machine).
It has no types though.
-
Systems Programming with Racket
Racket is great, and if you like it you might find Rash interesting:
https://rash-lang.org/
Janet and Gerbil Scheme are also worth a look:
https://janet-lang.org/
https://cons.io/
-
how did you finally reach Lisp enlightenment?
Point here is that, for instance Janet language does not have cons / pair type but tuple (and so is lispoid, not lisp), but clearly this is sufficient for macros & hence seamless language construction: all you need is to be a lispoid although being a lisp gives another useful feature.
What are some alternatives?
django-unicorn - The magical reactive component framework for Django ✨
Fennel - Lua Lisp Language
htmx - </> htmx - high power tools for HTML
get-started-with-clojure - Learn Clojure and Interactive Programming – Zero install
django-tailwind-alpine-htmx - Simple Task app using Django, Tailwind CSS, Alpine.js and HTMX
babashka - Native, fast starting Clojure interpreter for scripting
reactor - Phoenix LiveView but for Django
scheme-for-max - Max/MSP external for scripting and live coding Max with s7 Scheme Lisp
django-tailwind - Django + Tailwind CSS = 💚
ferret - Ferret is a free software lisp implementation for real time embedded control systems.
clerk - Website used by new Anika clients to enter the facts of their case (backend)
kaboom.js - 💥 JavaScript game library