【发布时间】:2020-02-22 18:10:00
【问题描述】:
我有一个template,用户在其中传递一个查询并选择几个复选框(这些复选框的范围可以从 1 到 100)。然后,我的view 执行以下操作:
def search(request):
results_list = search(request.GET.get("q", ""), request.GET.getlist("c"))
# Pagination
paginator = Paginator(results_list, 10)
page = request.GET.get("page")
results = paginator.get_page(page)
return render(
request,
"web/search/show.html",
{
"query": query,
"results": results,
},
)
出现问题是因为搜索和结果的呈现都发生在同一页面上。因此,当我想在我的模板中包含分页时,我必须执行以下操作:
<div class="pagination">
<div class="step-links">
{% if results.has_previous %}
<a href="?page={{ results.previous_page_number }}&{{request.GET.urlencode}}" class="prev-page-link">Previous</a>
{% endif %}
{% if results %}
<span class="current">
Page {{ results.number }} of {{ results.paginator.num_pages }}
</span>
{% endif %}
{% if results.has_next %}
<a href="?page={{ results.next_page_number }}&{{request.GET.urlencode}}" class="next-page-link">Next</a>
{% endif %}
</div>
</div>
请考虑request.GET.urlencode 的用法,因为当用户想要转到上一页或下一页时,需要传递相同的query 和checkboxes。但是,当用户通过第二页时,这会产生一个错误,因为?page=3&page=2 会不断堆积。有人可以为我指出解决此问题的正确方向吗?
【问题讨论】:
标签: python django django-views