Performance: Filtering with django-filter
This affects server response time and the amount of data sent to the client, impacting page load speed and interaction responsiveness.
Jump into concepts and practice - no test required
import django_filters class ProductFilter(django_filters.FilterSet): class Meta: model = Product fields = ['category'] def product_list(request): f = ProductFilter(request.GET, queryset=Product.objects.all()) return render(request, 'products.html', {'filter': f, 'products': f.qs})
def product_list(request): products = Product.objects.all() if 'category' in request.GET: products = [p for p in products if p.category == request.GET['category']] return render(request, 'products.html', {'products': products})
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Python list filtering after query | N/A (server-side) | N/A | Large HTML response slows paint | [X] Bad |
| django-filter database filtering | N/A (server-side) | N/A | Smaller HTML response speeds paint | [OK] Good |
django-filter in a Django project?Book with a filter on the author field?author='Alice'?
class BookFilter(FilterSet):
class Meta:
model = Book
fields = ['author']
books = Book.objects.all()
filtered_books = BookFilter({'author': 'Alice'}, queryset=books).qsclass BookFilter(FilterSet):
class Meta:
model = Book
fields = ['title']
filter = BookFilter(request.GET)
filtered_books = filter.qsProduct objects by price range using django-filter. Which FilterSet definition correctly allows filtering products with price greater than or equal to a minimum and less than or equal to a maximum?