实现django分页功能
流程简介
- 建一个商品表并在表中添加至少2个以上的商品,然后实现首页展示所有的商品
- 在首页视图函数中 获取商品表的所有数据,然后进行分页操作
具体代码如下
- views视图中
from django.core.paginator import Paginator
def index(request,pindex):
if request.method == 'GET':
g_list = Fiction.objects.all() # 获取商品表的所有数据
paginater = Paginator(g_list,1) # 分页(表中所有数据,每页显示几条数据)
if pindex == '': # 如果访问首页,默认是第一页
pindex = 1
page = paginater.page(pindex)
context = {'page':page}
return render(request,'xiaoapp/index.html',context)
- html页面中展示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<table border="1">
<tr>
<th>小说名称</th>
<th>小说图片</th>
<th>操作</th>
</tr>
{% for i in page %}
<tr>
<td><a href="/xiaoapp/show/">{{ i.name }}</a></td>
<td><img src="{{ i.image.url }}" alt="" width="100px" height="100px"></td>
<td><a href="/xiaoapp/delete/?id={{ i.id }}">删除</a></td>
</tr>
{% endfor %}
</table>
<div>
总页数:{{ page.paginator.num_pages }}
{% for i in page.paginator.page_range %}
<a href="{% url 'xiaoapp:index' i %}">{{ i }}</a>
{% endfor %}
</div>
</body>
</html>
- 以下是拓展 , 展示上一页,下一页,当前页
<div>
总页数:<span>{{ page.paginator.num_pages }}</span>
{% if page.has_previous %}
<a href="{% url 'lianapp:index' page.previous_page_number %}">上一页</a>
{% endif %}
{% for p in page.paginator.page_range %}
<a href="{% url 'lianapp:index' p %}">{{ p }}</a>
{% endfor %}
{% if page.has_next %}
<a href="{% url 'lianapp:index' page.next_page_number %}">下一页</a>
{% endif %}
当前页:{{ page.number }}
</div>