我正在使用此代码进行分页,并且我希望用户的选择在整个站点中保持不变(到目前为止已解决)......现在唯一的问题是会话变量现在是永久的,直到会话通过关闭浏览器清除。另外,我怎样才能显示相邻的页面......就像在 digg 风格的 Django 分页器中一样。我无法理解如何在我的代码中实现这一点。
代码如下:
from django.core.paginator import Paginator, InvalidPage, EmptyPage
def paginate(request, object_list, paginate_by=10):
try:
if "per_page" in request.session:
per_page = request.session["per_page"]
else:
request.session["per_page"] = int(request.REQUEST['p'])
per_page = request.session["per_page"]
request.session.set_expiry(0)
except:
per_page = 10
paginator = Paginator(object_list, per_page)
try:
page = int(request.GET.get('page', '1'))
except ValueError:
page = 1
try:
items = paginator.page(page)
except (EmptyPage, InvalidPage):
items = paginator.page(paginator.num_pages)
return items
然后在我的模板中,我有这个来呈现分页链接:
<div class="pagination" align="center">
<span class="step-links">
{% if items.has_previous %}
<a href="?page={{ items.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ items.number }} of {{ items.paginator.num_pages }}
</span>
{% if items.has_next %}
<a href="?page={{ items.next_page_number }}">next</a>
{% endif %}
</span>
</div>