Django Blog 分页

Author Avatar
Mutse Young 5月 29, 2013

本文简述如何在 django blog 中添加分页·「Paginator」功能。

安装

假设读者的机器已安装 django,请使用以下命令安装 django-pagination:

1
2
$ sudo apt-get install pip
$ sudo pip install django-pagination

或从 github 上获取源码进行安装:

1
2
3
$ git clone https://github.com/ericflo/django-pagination.git pagination
$ cd pagination
$ sudo python setup.py install

使用 django-pagination

修改 settings

修改工程目录下的 settings.py 文件中 INSTALLED_APPS:

1
2
3
4
INSTALLED_APPS = (
# ...
'pagination',
)

在 middleware 中添加 pagination:

1
2
3
4
MIDDLEWARE_CLASSES = (
# ...
'pagination.middleware.PaginationMiddleware',
)

修改视图

修改 app 中的 view.py:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage

# Create your views here.

def blog_list(request):
blogs = Blog.objects.all()
p = Paginator(blogs, 2)
page = request.GET.get('page')
try:
posts = p.page(page)
except PageNotAnInteger:
posts = p.page(1)
except EmptyPage:
posts = p.page(p.num_pages)
return render_to_response("blog_list.html", {"blogs": posts})

修改模版

修改 app 对应的模版文件,对要分页的列表变量进行分页:

1
2
3
{% raw %}
{% autopaginate object_list %}
{% endraw %}
参考资料: