Django 分页的简单实现

本文介绍了一种使用Django框架实现分页的方法。通过Paginator类进行分页操作,定义每页显示的文章数量,并处理页面请求参数。实现了文章列表的分页展示及导航功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Django分页比较简单,它内置了一个Paginator类.这样对分页的操作只需要明白这个类就OK了。

def list(request):
after_range_num = 5
bevor_range_num = 4
try:
page = int(request.GET.get("page",1))
print('page----->',page)
if page < 1:
page = 1
except ValueError:
page = 1

info = Article.objects.order_by('id').all()
paginator = Paginator(info,3)


try:
articleList = paginator.page(page)
except(EmptyPage,InvalidPage,PageNotAnInteger):
articleList = paginator.page(1)
print('articleList---->',articleList.object_list)
#显示范围
if page >= after_range_num:
page_range = paginator.page_range[page-after_range_num:page+bevor_range_num]
else:
page_range = paginator.page_range[0:int(page)+bevor_range_num]
return render_to_response("blogsite/list.html",locals())

以上是分页的controller.html代码如下:

{% if info %}
{% for article in articleList.object_list %}
<div class="article">
<div class="title">-----<a href='/blogsite/{{ article.id }}'>{{ article.title }}</a></div>
</div>
{% endfor %}
{% else %}
<p>对不起没有文章奥!</p>
{% endif %}

<hr>
{% if has_previous %}
<a href="/?page={{ previous }}">上一页</a>
{% endif %}
{% if has_next %}
<a href="/?page={{ next }}"></a>
{% endif %}
<hr>
{% if articleList.has_previous %}
<a href="?page={{ articleList.previous_page_number }}" title="下一页">上一页</a> 
{% endif %}
{% for p in page_range %}
{% ifequal p articleList.number %}
<span>{{p}}</span>
{% else %}
<a href="?page={{p}}" title="第{{p}}页">{{p}}</a>
{% endifequal %}
{% endfor %}
 
{% if articleList.has_next %}
<a href="?page={{ articleList.next_page_number }}" title="下一页">下一页</a> 
{% endif %}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值