Как применить пагинацию в Django's formview?
my view.py
class Formtestview(FormView):
template_name = 'test.html'
form_valid(self, form):
'my code to search' => 'result is object_list'
page = self.request.GET.get('page','1')
paginate = Paginator(object_list, 10)
page_obj = paginator.get_page(page)
return render(self.request, 'test.html', {'form':self.form_class, 'object_list':object_list, 'page_obj' = page_obj})
Как и в приведенном выше коде, ввод принимается через form_valid, постранично, а затем распыляется на тот же html-шаблон.
Результаты и пагинация также отображаются нормально, но если перейти на другую страницу, например ?page=2, то отображается только основной шаблон без всех результатов.
Есть ли способ постранично отобразить форму и результаты поиска в одном шаблоне?
Почему вы использовали FormView
? Пагинация поставляется с MultipleObjectMixin. Для простоты вы можете использовать ListView
, а не FormView
. ListView наследуется от MultipleObjectMixin
.
Этот пример взят из docs:
from django.views.generic import ListView
from myapp.models import Contact
class ContactListView(ListView):
paginate_by = 2
model = Contact