正在尝试使分页在Django
中工作。它在第1页看起来不错,但是当我转到第2页时,我可以看到我的整个数据库都显示出来了。你知道吗
这是我的代码:
class AdvancedSearch(ListView):
template_name= 'saferdb/AdvancedQuery.html'
def get(self, request):
c = request.GET.getlist('opeclass')
q = Question.objects.all()
#Ugly q filtering methods
paginator = Paginator(q, 25)
page = request.GET.get('page')
contacts = paginator.get_page(page)
return render(request, 'saferdb/list.html', {'text' : count , 'contacts': contacts})
你知道吗网址.py你知道吗
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^query/$', views.QueryView.as_view(), name='query'),
url(r'^advanced/$', views.AdvancedSearch.as_view(), name='advanced'),
]
模板代码:
<form method="get">
<!--- bunch of selection to filer output by --->
<div class="pagination">
<span class="step-links">
{% if contacts.has_previous %}
<a href="?page=1">« first</a>
<a href="?page={{ contacts.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}.
</span>
{% if contacts.has_next %}
<a href="?page={{ contacts.next_page_number }}">next</a>
<a href="?page={{ contacts.paginator.num_pages }}">last »</a>
{% endif %}
</span>
</div>
如果使用def get方法,则不应使用ListView,而应使用TemplateView或View。例如,ListView使用attr对\u进行分页
page\u kwarg=='默认情况下为'page',它检查您的url并获取page\u kwarg值的数据,因此您可以使用ListView执行以下操作
实际上是这样的
另外,在我看来,有点奇怪,你用问题模型queryset来分页,但在回应中queryset被称为contacts。也许,你的代码中遗漏了一些重要的东西?你知道吗
相关问题 更多 >
编程相关推荐