如何在Django的formview中应用分页?
How to apply paging in Django's formview?
我的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
我的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