Skip to content

Commit d797693

Browse files
committed
documented the list class based view
1 parent bbd8d39 commit d797693

File tree

2 files changed

+31
-0
lines changed
  • django_async_extensions/aviews/generic
  • docs/views/async-class-based-views

2 files changed

+31
-0
lines changed

django_async_extensions/aviews/generic/list.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313

1414

1515
class AsyncMultipleObjectMixin(MultipleObjectMixin):
16+
"""A mixin for views manipulating multiple objects."""
17+
1618
paginator_class = AsyncPaginator
1719

1820
async def get_queryset(self):
@@ -43,6 +45,7 @@ async def get_queryset(self):
4345
return queryset
4446

4547
async def paginate_queryset(self, queryset, page_size):
48+
"""Paginate the queryset, if needed."""
4649
paginator = self.get_paginator(
4750
queryset,
4851
page_size,
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
## AsyncListView
2+
3+
`AsyncListView` generic view
4+
5+
```python
6+
from django_async_extensions.aviews.generic import AsyncListView
7+
8+
class MyListView(AsyncListView):
9+
model = MyModel
10+
```
11+
12+
`AsyncListView` works similarly to django's [ListView](https://docs.djangoproject.com/en/5.1/ref/class-based-views/generic-display/#listview) but with a few differences:
13+
14+
1. `get_queryset()` method is async.
15+
2. `paginate_queryset()` method is async.
16+
3. `get_context_data()` method is async.
17+
4. `get()` method is async.
18+
5. [AsyncPaginator](../../core/async-paginator.md) is used for pagination instead of django's regular [Paginator](https://docs.djangoproject.com/en/5.1/ref/paginator/#django.core.paginator.Paginator).
19+
6. `AsyncListView` inherits from [AsyncView](async-class-based-views.md#asyncview) so anything mentioned there also applies here.
20+
21+
## Base classes
22+
some of the base classes for `ListView` have been re-written as async:
23+
24+
### AsyncMultipleObjectMixin
25+
like [MultipleObjectMixin](https://docs.djangoproject.com/en/5.1/ref/class-based-views/mixins-multiple-object/#django.views.generic.list.MultipleObjectMixin) but `get_queryset()`, `paginate_queryset()` and `get_context_data()` methods are async.
26+
27+
### AsyncBaseListView
28+
like [BaseListView](https://docs.djangoproject.com/en/5.1/ref/class-based-views/generic-display/#django.views.generic.list.BaseListView) but `get()` method is async.

0 commit comments

Comments
 (0)