djangopaginationformview

How to apply paging in 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})

As in the code above, input is received through form_valid, paged, and then sprayed on the same html template.

Results and paging are also displayed normally, but if you go to another page like ?page=2, only the basic template without all the results is shown.

Is there a way to paginate the form and search results in one template?


Solution

  • Why did you use FormView? Pagination comes with MultipleObjectMixin. For simplicity, you can use ListView rather than FormView. ListView is inherited from MultipleObjectMixin.

    This example is from docs:

    from django.views.generic import ListView
    
    from myapp.models import Contact
    
    class ContactListView(ListView):
        paginate_by = 2
        model = Contact