Django基础分页问题
我有一个微博应用程序,我想把内容分页,每页只显示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>
谢谢!
2 个回答
5
返回一个叫做 object_list 的通用视图,这个视图可以接收一个叫 paginate_by
的参数,而不是返回 render_to_response
。
6
你可以使用 django-pagination 这个工具,它可以让你在不写一行Python代码的情况下实现分页功能。你只需要把所有对象的列表传递给模板(比如在你的情况下,使用 blog_list = Blog.objects.all()
),然后在你的模板中使用三个标签就可以了:
{% load pagination_tags %}
{% autopaginate blog_list 10 %}
{% paginate %}