Allows users to filter Django models
Project description
Django Filtering UI
A Django app for providing a user interface (UI) to the
django-filtering
package.
The original usecase for the project's UI required the following:
- Does not disrupt existing backend rendered model listings
- provides the ability to filter on a field more than once
- provides the ability to toggle the filtering operation
(i.e.
AND,ORandNOTfilters operators) - provides the grouping of filters by operator (TODO)
- serializes UI filter data to JSON
- pre-validates UI filter data before sending to backend (TODO)
The UI is implemented in VueJS as a progressive web app (PWA). VueJS was used because of it's small footprint, ease of use, and progressive usage.
The UI implementation here in django-filtering-ui is separate from django-filtering
because there are multiple paths to implementing a frontend behavior.
I've choosen to create a PWA in VueJS,
but there is nothing stopping someone from developing a solution in htmx, React, JQuery, etc.
Installation
Install via pip or the preferred package manager:
pip install django-filtering-ui
Add this package to the installed apps list in your settings.
INSTALLED_APPS=[
#...
'django_filtering_ui',
]
See Usage for how to integrate into your frontend.
Usage
TODO
State of development
This package is very much a work-in-progress. All APIs are completely unstable.
Testing & development
Note, I'm testing within a docker container, because I never run anything locally. There are two containers, one for each language; Python for the backend and Node for the frontend. For the moment the containers is simply run with:
docker run -d --rm --name django-filtering-ui--frontend --workdir /code -v $PWD:/code -p 5173:5173 -p 9223:9223 node:latest sleep infinity
docker run -d --rm --name django-filtering-ui--backend --workdir /code -v $PWD:/code python:3.12 sleep infinity
Testing the frontend
Execute testing commands:
docker exec django-filtering-ui--frontend npm install
docker exec django-filtering-ui--frontend npm run test
Testing the backend
Execute testing commands:
docker exec django-filtering-ui--backend pip install -e ".[tests]"
docker exec django-filtering-ui--backend pytest
Using the debugger when testing the frontend
To use the chrome debugger use the following:
npm exec -- vitest --inspect-brk 0.0.0.0:9223 --no-file-parallelism -t $TEST_FILE
Then open chrome://inspect and 0.0.0.0:9223 as a network target.
Building for release
At this time the package is built as follows:
# Builds the js source and outputs it into src/django_filtering_ui/static
npm run build
# Build the python package files
hatchling build
License
GPL v3 (see LICENSE file)
Copyright
© 2025 The Shadowserver Foundation
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_filtering_ui-0.0.3.tar.gz.
File metadata
- Download URL: django_filtering_ui-0.0.3.tar.gz
- Upload date:
- Size: 105.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1019c3246f99e0cf1076e9cc1fa0f70a498140546e5af4e6bdd3ab486eb5743d
|
|
| MD5 |
f2101e6df36e56c0eda7ef906cef7491
|
|
| BLAKE2b-256 |
ed6b65ca339173fac15195a76f164aa555079c0d781aa3f0beb2cafbc72c514c
|
File details
Details for the file django_filtering_ui-0.0.3-py3-none-any.whl.
File metadata
- Download URL: django_filtering_ui-0.0.3-py3-none-any.whl
- Upload date:
- Size: 77.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
697d1fb1f051012384ecbff1f3e896068899d4f293392fe4c0d50224e8aa45ed
|
|
| MD5 |
14c11ff0933674f69ea412141c5531fc
|
|
| BLAKE2b-256 |
cef0274896e1f946fb7f4d1d9a2aedddda7a72c71a2b0a73d75fabdc8500d3c9
|