
Security News
Browserslist-rs Gets Major Refactor, Cutting Binary Size by Over 1MB
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
.. image:: https://badge.fury.io/py/dj-url-filter.svg :target: http://badge.fury.io/py/dj-url-filter .. image:: https://readthedocs.org/projects/django-url-filter/badge/?version=latest :target: http://django-url-filter.readthedocs.io/en/latest/?badge=latest .. image:: https://codecov.io/gh/enjoy2000/django-url-filter/branch/master/graph/badge.svg :target: https://codecov.io/gh/enjoy2000/django-url-filter
Django URL Filter provides a safe way to filter data via human-friendly URLs.
This is a forked version of https://github.com//miki725/django-url-filter to add Django 4 support and my other projects.
The main goal of Django URL Filter is to provide an easy URL interface for filtering data. It allows the user to safely filter by model attributes and also allows to specify the lookup type for each filter (very much like Django's filtering system in ORM).
For example the following will retrieve all items where the id is
5
and title contains "foo"
::
example.com/listview/?id=5&title__contains=foo
In addition to basic lookup types, Django URL Filter allows to
use more sophisticated lookups such as in
or year
.
For example::
example.com/listview/?id__in=1,2,3&created__year=2013
Easiest way to install this library is by using pip
::
$ pip install dj-url-filter
To make example short, it demonstrates Django URL Filter integration with Django REST Framework but it can be used without DRF (see below).
::
from url_filter.integrations.drf import DjangoFilterBackend
class UserViewSet(ModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer filter_backends = [DjangoFilterBackend] filter_fields = ['username', 'email']
Alternatively filterset can be manually created and used directly to filter querysets::
from django.http import QueryDict from url_filter.filtersets import ModelFilterSet
class UserFilterSet(ModelFilterSet): class Meta(object): model = User
query = QueryDict('email__contains=gmail&joined__gt=2015-01-01') fs = UserFilterSet(data=query, queryset=User.objects.all()) filtered_users = fs.filter()
Above will automatically allow the use of all of the Django URL Filter features. Some possibilities::
# get user with id 5
example.com/users/?id=5
# get user with id either 5, 10 or 15
example.com/users/?id__in=5,10,15
# get user with id between 5 and 10
example.com/users/?id__range=5,10
# get user with username "foo"
example.com/users/?username=foo
# get user with username containing case insensitive "foo"
example.com/users/?username__icontains=foo
# get user where username does NOT contain "foo"
example.com/users/?username__icontains!=foo
# get user who joined in 2015 as per user profile
example.com/users/?profile__joined__year=2015
# get user who joined in between 2010 and 2015 as per user profile
example.com/users/?profile__joined__range=2010-01-01,2015-12-31
# get user who joined in after 2010 as per user profile
example.com/users/?profile__joined__gt=2010-01-01
Human-friendly URLs
Filter querystring format looks very similar to syntax for filtering in Django ORM. Even negated filters are supported! Some examples::
example.com/users/?email__contains=gmail&joined__gt=2015-01-01 example.com/users/?email__contains!=gmail # note !
Related models
Support related fields so that filtering can be applied to related models. For example::
example.com/users/?profile__nickname=foo
Decoupled filtering
How URLs are parsed and how data is filtered is decoupled. This allows the actual filtering logic to be decoupled from Django hence filtering is possible not only with Django ORM QuerySet but any set of data can be filtered (e.g. SQLAlchemy query objects) assuming corresponding filtering backend is implemented.
Usage-agnostic
This library decouples filtering from any particular usage-pattern. It implements all the basic building blocks for creating filtersets but it does not assume how they will be used. To make the library easy to use, it ships with some integrations with common usage patterns like integration with Django REST Framework. This means that its easy to use in custom applications with custom requirements (which is probably most of the time!)
FAQs
Django URL Filter provides a safe way to filter data via human-friendly URLs.
We found that dj-url-filter demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Research
Security News
Eight new malicious Firefox extensions impersonate games, steal OAuth tokens, hijack sessions, and exploit browser permissions to spy on users.
Security News
The official Go SDK for the Model Context Protocol is in development, with a stable, production-ready release expected by August 2025.