为了解决这个问题,我刚刚修改了分页HTML,以容纳来自表单的get请求和url字符串中的页码,如下所示:
<div > <span > {% if page_obj.has_previous %} <a href="/browse/?browse={{ input }}&page={{ page_obj.previous_page_number }}">previous</a> {% endif %} <span > Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}. </span> {% if page_obj.has_next %} <a href="/browse/?browse={{ input }}&page={{ page_obj.next_page_number }}">next</a> {% endif %} </span></div>这里的{{input}}是一个字符串,其中包含通过表单提交的选项,例如“ Cats”或“ Worms”。
为了能够将其传递到模板中,我对基于类的视图的get_context_data方法进行了如下修改:
class Browse(generic.ListView): template_name = 'app/browse.html' paginate_by = 25 # Modifying the get_context_data method def get_context_data(self, **kwargs): context = super(Browse, self).get_context_data(**kwargs) q = self.request.GET.get("browse") context['input'] = q return context def get_queryset(self): queryset = Cats.objects.all() if self.request.GET.get("browse"): selection = self.request.GET.get("browse") if selection == "Cats": queryset = Cats.objects.all() elif selection == "Dogs": queryset = Dogs.objects.all() elif selection == "Worms": queryset = Worms.objects.all() else: queryset = Cats.objects.all() return queryset就是这样,URL字符串现在显示为:
/browse/?browse=Cats&page=3
这样就可以了,分页现在可以与表单的get方法一起使用。



