您的位置:首页 > 编程语言

Django之自定义分页代码简单实现

2017-12-19 08:03 931 查看
def get_page(request, ):
"""
自定义分页
:param request:
:return:
"""
method_get_info = request.GET
request.GET._mutable = True
request.GET['list_filter'] = method_get_info.urlencode()

# 伪造数据
global basic_url
if request.method == 'GET':

curr_page_num = int(request.GET.get('page', 1))

data_list = []

idx_list = []
for idx, val in enumerate(range(1, 1118), 1):
idx_list.append(idx)
basic_url = '/page/10/?%s' % request.GET.urlencode()
data_list.append('%s.%s.%s.%s' % (val, val, val, val))
# basic_url_list = []
# for idx in idx_list:
#     basic_url = '/page/?page=%s&did=%s' % (curr_page_num, idx)
#     basic_url_list.append(basic_url)
# print(basic_url_list)

# 开始分页
per_page_num = 10
# #数据在每页开始的数字

data_start_num = (curr_page_num - 1) * per_page_num

# #数据在每页结束的数字
data_end_num = per_page_num * curr_page_num

per_page_data = data_list[data_start_num:data_end_num]

# 总的数据量
data_total_count = len(data_list)

total_pages, left_num = divmod(data_total_count, per_page_num)

if left_num:
total_pages += 1

# 控制页码显示的个数
# #总页数<11
show_label_num = 11
if total_pages < show_label_num:
show_label_num = total_pages
# #总页数>11
else:
show_label_num = show_label_num

pager_html_list = []
# 起始页码
start_page_num = 1
# #翻页时控制起始页
if curr_page_num - start_page_num < 5:
start_page_num = 1
else:
start_page_num = curr_page_num - 5
# #翻页时控制终止页
if curr_page_num + 5 > total_pages:
show_label_num = total_pages
# ===========================>>>
start_page_num = show_label_num - 10
else:
show_label_num = curr_page_num + 5

for idx, i in enumerate(range(start_page_num, show_label_num + 1)):
# 如果循环的页数等于当前页
if i == curr_page_num:
pager_html_list.append(
'<a href="/page/?page=%s" class="active url">%s</a>' % (i, i,))
else:
pager_html_list.append(
'<a href="/page/?page=%s" class="url">%s</a>' % (i, i,))
pager_html = ''.join(pager_html_list)

return render(request, 'my_pager.html',
{
'per_page_data': per_page_data,
'pager_html': pager_html,
'basic_url': basic_url
}
)


不懂得可以参考:

https://github.com/QuincyC379/Djet

PS:根据Django源码写的快速增删改查的组件,希望对各位有点帮助!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  django filter 分页