Django翻页
在使用django时,我们难免会遇到翻页的情况,下面记录一下我的翻页的学习
from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger
def users(request):
user_list = models.UserInfo.objects.all()
current_page = request.GET.get('p')
paginator = Paginator(user_list,10)
try:
page_obj = paginator.page(current_page)
except EmptyPage as e:
page_obj = paginator.page(1)
except PageNotAnInteger as e:
page_obj = paginator.page(1)
return render(request,'users.html',
{'page_obj':page_obj}) 返回page_obj对象
下面是html的模版
<body>
<table>
<thead>
<tr>
<th>用户名</th>
<th>密码</th> #这里是表头
<th>邮箱</th>
</tr>
</thead>
<tbody>
{% for row in page_obj.object_list %} #循环获取数据
<tr>
<td>{{ row.username }}</td>
<td>{{ row.password }}</td>
<td>{{ row.email }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<div>
{% if page_obj.has_previous %} #如果这一页有上一页,则点击可跳转
<a href="/users?p={{page_obj.previous_page_number }}">上一页</a>
{% else %}
<a href="#">上一页</a> #没有则不能跳转
{% endif %}
{% for i in page_obj.paginator.page_range %}
<a href="/users?p={{ i }}">{{i}}</a> #中间的页码,可以跳转
{% endfor%}
{% if page_obj.has_next %} #此页有下一页也继续跳转
<a href="/users?p={{page_obj.next_page_number }}">下一页</a>
{% else %}
<a href="#">一页</a>
{% endif %}
</div>
<span>
{{ page_obj.number }}/{{ page_obj.paginator.num_pages }} #当前页数/总页数
</span>
</body>