码迷,mamicode.com
首页 > 其他好文 > 详细

django项目分页

时间:2018-10-23 22:56:32      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:append   user   safe   size   first   ast   tab   跳转   app   

测试版本 

 代码:

# 测试分页
users=[{‘name‘:‘alex{}‘.format(i),‘pwd‘:‘aaa{}‘.format(i)}for i in range(1,302)]

def user_list(request):
# 获取当前页码值 并处理异常 输入字母也显示第一页 默认为第一页
try:
current_page=int(request.GET.get(‘page‘,1))
# 如果小于o 显示页面为1
if current_page<=0:
current_page=1
except Exception as e:
current_page=1
# 最多显示页码数
max_show=11
half_show=max_show//2

#每页显示数量
per_num=10
# 总数量
all_count=len(users)
# 总页数
total_num,more=divmod(all_count,per_num)
# 判断是否有剩余的
if more:
total_num +=1


#总页面数小于最大显示数: 显示总页码数
if total_num<max_show:
page_start= 1
page_end=max_show
#总页面数大于最大显示数: 显示总页码数
else:
# 当前页面数 小于一半
if current_page<=half_show:
page_start=1
page_end=max_show
# 当前页面数加一半 大于总页面数
elif current_page +half_show >=total_num:
page_end = total_num
page_start=total_num -max_show +1
else:
page_start=current_page - half_show
page_end=current_page +half_show
# 存放li标签的列表
html_list=[]
# 写首页 直接跳转
first_li=‘<li><a href="/crm/user_list/?page=1">首页</a></li>‘
html_list.append(first_li)
# 添加点击到第一页 不能点
if current_page ==1:
prev_li=‘<li class="disabled"><a><<</a></li>‘
# 可以点击上一页
else:
prev_li=‘<li><a href="/crm/user_list/?page={0}"><<</a></li>‘.format(current_page - 1)
html_list.append(prev_li)

# 循环 分页 在后端添加样式再传到前端
for num in range(page_start,page_end+1):
# 给当前页面加样式
if current_page==num:
li_html=‘<li class="active"><a href="/crm/user_list/?page={0}">{0}</a></li>‘.format(num)
# 否则不加
else:
li_html = ‘<li ><a href="/crm/user_list/?page={0}">{0}</a></li>‘.format(num)
html_list.append(li_html)

# 添加点击到最后一页 不能点
if current_page==total_num:
next_li=‘<li class="disabled"><a>>></a></li>‘
# 可以点击下一页
else:
next_li = ‘<li><a href="/crm/user_list/?page={0}">>></a></li>‘.format(current_page + 1)
html_list.append(next_li)
# 写尾页 直接跳转
last_li = ‘<li><a href="/crm/user_list/?page={}">尾页</a></li>‘.format(total_num)
html_list.append(last_li)
#在前端显示全部界面\

html_str=mark_safe(‘‘.join(html_list))


# 获取切片起始值 current_page为页数,因为是切片取第一页要从零开始 要减一
start=(current_page-1)*per_num
# 获取切片终止值
end=current_page *per_num

return render(request,‘user_list.html‘,
{‘data‘:users[start:end],
# ‘total_num‘:range(page_start,page_end+1)
‘html_str‘: html_str
}
)
html代码:(里面有模板与继成)
{% extends ‘board/base.html‘ %}

{% block conten %}

<table class="table table-bordered">
<thead>
<tr>
<th>序号</th>
<th>用户名</th>
<th>密码</th>
</tr>
</thead>
<tbody>
{% for user in data %}
<tr>
<td>{{ forloop.counter }}</td>
<td>{{ user.name }}</td>
<td>{{ user.pwd }}</td>
</tr>
{% endfor %}

</tbody>
</table>

<nav aria-label="Page navigation">
<ul class="pagination">
{# {% for num in total_num %}#}
{# <li><a href="/crm/user_list/?page={{ num }}">{{ num }}</a></li>{% endfor %}#}

{# {% for num in total_num %}#}
{# <li><a href="/user_list/?page={{ num }}">{{ num }}</a></li>#}
{# {% endfor %}#}
{# {{ html_str|safe }}#}
{{ html_str }}
</ul>
</nav>

{% endblock %}

 

django项目分页

标签:append   user   safe   size   first   ast   tab   跳转   app   

原文地址:https://www.cnblogs.com/xdlzs/p/9839438.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!