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