A Django autocomplete component powered by htmx
Project description
django-htmx-autocomplete
This Django app provides a client-side autocomplete component powered by htmx featuring multiselect, search and is completely extensible.
Quick start
-
Add "autocomplete" to your
INSTALLED_APPS
setting like this:# settings.py INSTALLED_APPS = [ ... 'django.contrib.staticfiles', # also required 'autocomplete', ]
-
Include the autocomplete urls like this:
# urls.py ... from autocomplete import HTMXAutoComplete urlpatterns = [ ... *HTMXAutoComplete.url_dispatcher('ac'), ]
This will add routes prefixed by
ac
to support component instances. -
Use either the widget or class to create components!
from django forms from django.db import models from autocomplete import HTMXAutoComplete, widgets # Example models class Person(models.Model): name = models.CharField(max_length=60) class Team(models.Model): name = models.CharField(max_length=60) members = models.ManyToManyField(Person) # Using the widget class MultipleFormModel(forms.ModelForm): """Multiple select example form using a model""" class Meta: """Meta class that configures the form""" model = Team fields = ['name', 'members'] widgets = { 'members': widgets.Autocomplete( name='members', options=dict(multiselect=True, model=Person) ) } # Using the class class GetItemsMultiAutoComplete(HTMXAutoComplete): name = "members" multiselect = True class Meta: model = Person
-
Make sure your templates include HTMX.
Note Bootstrap is included in this example styling, however it is not required.
{% load autocomplete %} {% load static %} <!doctype html> <html lang="en"> <head> <!-- Bootstrap --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous"> </head> <body> <h1>Example base html template</h1> <!-- Bootstrap --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3" crossorigin="anonymous"></script> <!-- htmx --> <script src="https://unpkg.com/htmx.org@1.8.3" integrity="sha384-e2no7T1BxIs3ngCTptBu4TjvRWF4bBjFW0pt7TpxOEkRJuvrjRt29znnYuoLTz9S" crossorigin="anonymous"></script> <!-- htmx csrf --> <script> document.body.addEventListener('htmx:configRequest', (event) => { event.detail.headers['X-CSRFToken'] = '{{ csrf_token }}'; }); </script> </body> </html>
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for django-htmx-autocomplete-0.5.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | d11bc3ffdd90962133099b11401e05358c579dfd345ceaba9f6a555c3d6b7243 |
|
MD5 | 9d54b86a9f455238d6892561c4304199 |
|
BLAKE2b-256 | 63117a4c52d6ad8a0292f69d83c4bb7777982673807e38a7ffaaa449591a6ceb |
Close
Hashes for django_htmx_autocomplete-0.5.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 330cfad3d3bd1cd5041e2f37b92e6be6e94668e1a939f251257008f5a3e8bf08 |
|
MD5 | 48f37b95ea96be47fa4ab8a038495bf7 |
|
BLAKE2b-256 | 2ea6d6c13925a1030d1085b5a4877b7a304728471ebfb5912f5cd01adeb46f01 |