Skip to content

Commit 4113bfc

Browse files
author
yangxg
committed
Step24: using django-pure-pagination
1 parent c2af434 commit 4113bfc

File tree

7 files changed

+112
-82
lines changed

7 files changed

+112
-82
lines changed

Pipfile

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ django = "*"
1111
markdown = "*"
1212
gunicorn = "*"
1313
faker = "*"
14+
django-pure-pagination = "*"
1415

1516
[requires]
1617
python_version = "3.6"

Pipfile.lock

+71-56
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ tutorial 分支为项目的主分支,每一篇教程的代码都和历史提
144144
21. [Django 官方推荐的姿势:类视图](https://www.zmrenwu.com/courses/hellodjango-blog-tutorial/materials/79/)
145145
22. [在脚本中使用 ORM:Faker 批量生成测试数据](https://www.zmrenwu.com/courses/hellodjango-blog-tutorial/materials/80/)
146146
23. [通过 Django Pagination 实现简单分页](https://www.zmrenwu.com/courses/hellodjango-blog-tutorial/materials/81/)
147+
24. [稳定易用的 Django 分页库,完善分页功能](https://www.zmrenwu.com/courses/hellodjango-blog-tutorial/materials/82/)
147148

148149
## 公众号
149150
<p align="center">

blog/views.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
from django.utils.text import slugify
66
from django.views.generic import DetailView, ListView
77
from markdown.extensions.toc import TocExtension
8+
from pure_pagination.mixins import PaginationMixin
89

910
from .models import Category, Post, Tag
1011

1112

12-
class IndexView(ListView):
13+
class IndexView(PaginationMixin, ListView):
1314
model = Post
1415
template_name = 'blog/index.html'
1516
context_object_name = 'post_list'

blogproject/settings/common.py

+9
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
'django.contrib.messages',
3131
'django.contrib.staticfiles',
3232

33+
'pure_pagination', # 分页
34+
3335
'blog.apps.BlogConfig', # 注册 blog 应用
3436
'comments.apps.CommentsConfig', # 注册 comments 应用
3537
]
@@ -110,3 +112,10 @@
110112

111113
STATIC_URL = '/static/'
112114
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
115+
116+
# 分页设置
117+
PAGINATION_SETTINGS = {
118+
'PAGE_RANGE_DISPLAYED': 4,
119+
'MARGIN_PAGES_DISPLAYED': 2,
120+
'SHOW_FIRST_PAGE_WHEN_INVALID': True,
121+
}

templates/blog/index.html

+1-25
Original file line numberDiff line numberDiff line change
@@ -28,31 +28,7 @@ <h1 class="entry-title">
2828
{% endfor %}
2929

3030
{% if is_paginated %}
31-
<div class="pagination-simple">
32-
<!-- 如果当前页还有上一页,显示一个上一页的按钮 -->
33-
{% if page_obj.has_previous %}
34-
<a href="?page={{ page_obj.previous_page_number }}">上一页</a>
35-
{% endif %}
36-
<!-- 显示当前页面信息 -->
37-
<span class="current">第 {{ page_obj.number }} 页 / 共 {{ paginator.num_pages }} 页</span>
38-
<!-- 如果当前页还有下一页,显示一个下一页的按钮 -->
39-
{% if page_obj.has_next %}
40-
<a href="?page={{ page_obj.next_page_number }}">下一页</a>
41-
{% endif %}
42-
</div>
31+
{{ page_obj.render }}
4332
{% endif %}
4433

45-
{# <div class="pagination">#}
46-
{# <ul>#}
47-
{# <li><a href="">1</a></li>#}
48-
{# <li><a href="">...</a></li>#}
49-
{# <li><a href="">4</a></li>#}
50-
{# <li><a href="">5</a></li>#}
51-
{# <li class="current"><a href="">6</a></li>#}
52-
{# <li><a href="">7</a></li>#}
53-
{# <li><a href="">8</a></li>#}
54-
{# <li><a href="">...</a></li>#}
55-
{# <li><a href="">11</a></li>#}
56-
{# </ul>#}
57-
{# </div>#}
5834
{% endblock main %}
+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<div class="text-center pagination" style="width: 100%">
2+
<ul>
3+
{% if page_obj.has_previous %}
4+
<li><a href="?{{ page_obj.previous_page_number.querystring }}"
5+
class="prev">&lsaquo;&lsaquo; </a></li>
6+
{% else %}
7+
<li><span class="disabled prev">&lsaquo;&lsaquo; </span></li>
8+
{% endif %}
9+
{% for page in page_obj.pages %}
10+
{% if page %}
11+
{% ifequal page page_obj.number %}
12+
<li class="current"><a href="#">{{ page }}</a></li>
13+
{% else %}
14+
<li><a href="?{{ page.querystring }}" class="page">{{ page }}</a></li>
15+
{% endifequal %}
16+
{% else %}
17+
...
18+
{% endif %}
19+
{% endfor %}
20+
{% if page_obj.has_next %}
21+
<li><a href="?{{ page_obj.next_page_number.querystring }}" class="next"> &rsaquo;&rsaquo;</a>
22+
</li>
23+
{% else %}
24+
<li><span class="disabled next"> &rsaquo;&rsaquo;</span></li>
25+
{% endif %}
26+
</ul>
27+
</div>

0 commit comments

Comments
 (0)