我有一个微博应用程序,我正在尝试对条目进行分页,例如每页只显示10个。 虽然我已经按照教程进行了操作,但我的分页似乎并没有起作用。
列表功能如下所示:
def listing(request):
blog_list = Blog.objects.all()
paginator = Paginator(blog_list, 10)
try:
page = int(request.GET.get('page','1'))
except ValueError:
page = 1
try:
posts = paginator.page(page)
except (EmptyPage, InvalidPage):
posts = paginator.page(paginator.num_pages)
return render_to_response('profile/publicProfile.html', {"posts": posts})
并在我的模板中:
<div class="pagination">
<span class="step-links">
{% if posts.has_previous %}
<a href="?page={{ posts.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ posts.number }} of {{ posts.paginator.num_pages }}.
</span>
{% if object.has_next %}
<a href="?page={{ posts.next_page_number }}">next</a>
{% endif %}
</span>
谢谢!
答案 0 :(得分:6)
你可以使用django-pagination来实现分页而不需要编写一行Python代码,只需将所有对象的列表传递给模板(例如你的blog_list = Blog.objects.all()
),然后在你的模板中使用三个标签:
{% load pagination_tags %}
{% autopaginate blog_list 10 %}
{% paginate %}
答案 1 :(得分:5)
返回带有paginate_by
参数的object_list通用视图,而不是返回render_to_response