【发布时间】:2017-02-02 15:24:07
【问题描述】:
我对搜索结果进行分页。起初,查询集给了我完美的结果,初始页码指示正确,但是当点击任何页码时,它接受搜索键为空并从数据库中获取所有数据。 这是代码
def search(request):
searchKey = request.POST.get("key", "")
searchRequestsInitial = ScRequests.objects.filter(description__contains=searchKey)
searchCount = searchRequestsInitial.count()
page = request.GET.get('page', 1)
paginator = Paginator(searchRequestsInitial, 10)
try:
searchRequests = paginator.page(page)
except PageNotAnInteger:
searchRequests = paginator.page(1)
except EmptyPage:
searchRequests = paginator.page(paginator.num_pages)
context = {'searchRequests':searchRequests,'searchCount':searchCount,'searchKey':searchKey}
template = "searchResult.html"
return render(request,template,context)
在模板中:
<tbody>
{% if searchRequests %}
{% for searchRequest in searchRequests %}
<tr>
<td>{{searchRequest.description|convert_utf8|shortName}}</td>
<td>{{searchRequest.title|convert_utf8|shortName}}</td>
<td>{{searchRequest.sender}}</td>
</tr>
{% endfor %}
{% endif %}
</tbody>
</table>
{% if searchRequests.has_other_pages %}
<ul class="pagination">
{% if searchRequests.has_previous %}
<li><a href="?page={{ searchRequests.previous_page_number }}">«</a></li>
{% else %}
<li class="disabled"><span>«</span></li>
{% endif %}
{% for i in searchRequests.paginator.page_range %}
{% if searchRequests.number == i %}
<li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li>
{% else %}
<li><a href="?page={{ i }}">{{ i }}</a></li>
{% endif %}
{% endfor %}
{% if searchRequests.has_next %}
<li><a href="?page={{ searchRequests.next_page_number }}">»</a></li>
{% else %}
<li class="disabled"><span>»</span></li>
{% endif %}
</ul>
{% endif %}
【问题讨论】:
标签: django pagination