【发布时间】:2019-03-02 02:03:54
【问题描述】:
我在views.py中尝试过这样的事情:
class HomePage(TemplateView):
template_name = "clouderp/index.html"
def get_context_data(self, **kwargs):
context = super(HomePage, self).get_context_data(**kwargs)
qs = Blog.objects.all()
context['blog_list'] = qs
page = self.request.GET.get('page')
paginator = Paginator(qs, 4)
try:
users = paginator.page(page)
except PageNotAnInteger:
users = paginator.page(1)
except EmptyPage:
users = paginator.page(paginator.num_pages)
context['users'] = users
return context
在模板中:
{% if users.has_other_pages %}
<ul class="pagination">
{% if users.has_previous %}
<li><a href="?page={{ users.previous_page_number }}">«</a></li>
{% else %}
<li class="disabled"><span>«</span></li>
{% endif %}
{% for i in users.paginator.page_range %}
{% if users.number == i %}
<li class="active"><span>{{ i }} <span class="sr-only"></span></span></li>
{% else %}
<li><a href="?page={{ i }}">{{ i }}</a></li>
{% endif %}
{% endfor %}
{% if users.has_next %}
<li><a href="?page={{ users.next_page_number }}">»</a></li>
{% else %}
<li class="disabled"><span>»</span></li>
{% endif %}
</ul>
{% endif %}
我使用 django 创建了一个博客应用程序
我想在我的 index.html 主页面中显示我的所有博客,并且还想为我的索引页面中的博客进行分页...
我想知道该怎么做...
因为我做博客的过程不是一次按4分页的...
【问题讨论】:
-
使用
ListView代替TemplateView可能更简单,因为ListView已经有分页选项。 -
context['blog_list'] = qs所以在你的模板中blog_list没有分页。users是分页的(为什么blog_list的页面还是叫users?)。
标签: python django django-templates django-views django-pagination