Skip to content

Commit 8e1bbd4

Browse files
WilliamGWJyangxg
authored andcommitted
为归档、分类、标签页面添加分页功能 (jukanntenn#87)
* 使用类的继承属性,为归档、分类、归档页面添加分页功能 * 完善分页导航功能
1 parent 2e30fc1 commit 8e1bbd4

File tree

2 files changed

+40
-36
lines changed

2 files changed

+40
-36
lines changed

blog/views.py

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -261,11 +261,8 @@ def archives(request, year, month):
261261
return render(request, 'blog/index.html', context={'post_list': post_list})
262262

263263

264-
class ArchivesView(ListView):
265-
model = Post
266-
template_name = 'blog/index.html'
267-
context_object_name = 'post_list'
268-
264+
# 归档页面,继承IndexView,可以拥有分页功能,减少代码量
265+
class ArchivesView(IndexView):
269266
def get_queryset(self):
270267
year = self.kwargs.get('year')
271268
month = self.kwargs.get('month')
@@ -280,21 +277,15 @@ def category(request, pk):
280277
return render(request, 'blog/index.html', context={'post_list': post_list})
281278

282279

283-
class CategoryView(ListView):
284-
model = Post
285-
template_name = 'blog/index.html'
286-
context_object_name = 'post_list'
287-
280+
# 分类页面,继承IndexView
281+
class CategoryView(IndexView):
288282
def get_queryset(self):
289283
cate = get_object_or_404(Category, pk=self.kwargs.get('pk'))
290284
return super(CategoryView, self).get_queryset().filter(category=cate)
291285

292286

293-
class TagView(ListView):
294-
model = Post
295-
template_name = 'blog/index.html'
296-
context_object_name = 'post_list'
297-
287+
# 标签页面,继承自IndexView
288+
class TagView(IndexView):
298289
def get_queryset(self):
299290
tag = get_object_or_404(Tag, pk=self.kwargs.get('pk'))
300291
return super(TagView, self).get_queryset().filter(tags=tag)

templates/blog/index.html

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -54,33 +54,46 @@ <h1 class="entry-title">
5454
{% comment %}
5555
完善的分页导航
5656
{% endcomment %}
57-
{% if is_paginated %}
5857
<div class="pagination">
5958
<ul>
60-
{% if first %}
61-
<li><a href="?page=1">1</a></li>
59+
{% if not is_paginated %}
60+
<a href="?page=1">首页</a>
61+
<a href="?page=1" style="color: red">1</a>
62+
<a href="?page=1">尾页</a>
6263
{% endif %}
63-
{% if left %}
64-
{% if left_has_more %}
65-
<li><span>...</span></li>
64+
{% if is_paginated %}
65+
<a href="?page=1">首页</a>
66+
{% if page_obj.has_previous %}
67+
<a href="?page={{ page_obj.previous_page_number }}">上一页</a>
6668
{% endif %}
67-
{% for i in left %}
68-
<li><a href="?page={{ i }}">{{ i }}</a></li>
69-
{% endfor %}
70-
{% endif %}
71-
<li class="current"><a href="?page={{ page_obj.number }}">{{ page_obj.number }}</a></li>
72-
{% if right %}
73-
{% for i in right %}
74-
<li><a href="?page={{ i }}">{{ i }}</a></li>
75-
{% endfor %}
76-
{% if right_has_more %}
77-
<li><span>...</span></li>
69+
{% if first %}
70+
<li><a href="?page=1">1</a></li>
7871
{% endif %}
79-
{% endif %}
80-
{% if last %}
81-
<li><a href="?page={{ paginator.num_pages }}">{{ paginator.num_pages }}</a></li>
72+
{% if left %}
73+
{% if left_has_more %}
74+
<li><span>...</span></li>
75+
{% endif %}
76+
{% for i in left %}
77+
<li><a href="?page={{ i }}">{{ i }}</a></li>
78+
{% endfor %}
79+
{% endif %}
80+
<li class="current"><a href="?page={{ page_obj.number }}" style="color: red">{{ page_obj.number }}</a></li>
81+
{% if right %}
82+
{% for i in right %}
83+
<li><a href="?page={{ i }}">{{ i }}</a></li>
84+
{% endfor %}
85+
{% if right_has_more %}
86+
<li><span>...</span></li>
87+
{% endif %}
88+
{% endif %}
89+
{% if last %}
90+
<li><a href="?page={{ paginator.num_pages }}">{{ paginator.num_pages }}</a></li>
91+
{% endif %}
92+
{% if page_obj.has_next %}
93+
<a href="?page={{ page_obj.next_page_number }}">下一页</a>
94+
{% endif %}
95+
<a href="?page={{ paginator.num_pages }}">尾页</a>
8296
{% endif %}
8397
</ul>
8498
</div>
85-
{% endif %}
8699
{% endblock main %}

0 commit comments

Comments
 (0)