最新Python的web开发全家桶(django+前端+数据库)
2023-06-23 18:36 作者:rearearaerae | 我要投稿

def pretty_num_list(request): """ 搜索 """ search_data = request.GET.get('search_data', '') # 接收查询条件 search_dict = {} # 空的话默认搜索全部 if search_data: # 有搜索要求 # 向数据库搜索包含 输入的号码 search_dict = { 'mobile_number__contains': search_data, # 模糊查询 } # obj_list = models.PrettyNum.objects.filter(mobile_number__contains=search_data) """ 分页 """ # 用户传入page,不传的话默认为1 page = int(request.GET.get('page', 1)) page_size = 10 # 每页展示10条数据 start = (page - 1) * page_size # 头数据 end = page * page_size # 尾数据 # 数据库数据的总条数 int data_count = models.PrettyNum.objects.filter(**search_dict).order_by('-level').count() # total_page_count:整数部分 ,m:余数部分 total_page_count, m = divmod(data_count, 10) if m > 0: # 存在余数 total_page_count += 1 # 显示的页数 plus = 5 # 如果总页数不满11条,则就展示这么多即可 if total_page_count <= 2 * plus + 1: start_page = 1 end_page = 11 else: # 数据库数据比较多>11页 # 当前页<=5 if page <= plus: # start_page = 1 end_page = 2 * plus + 1 # 当前页>5 else: # 去除一直往后翻页(即使最后几页没数据) if page + plus > total_page_count: start_page = total_page_count - plus * 2 end_page = total_page_count else: start_page = page - plus end_page = page + plus # 存字符串 page_str_list = [] # 首页 page_str_list.append('<li><a href="/preNumber/list/?page={}" aria-label="Previous"><span aria-hidden="true">首页</span></a></li>'.format(1)) if page > 1: # 可向上翻页 page_str_list.append( '<li><a href="/preNumber/list/?page={}" aria-label="Previous"><span aria-hidden="true">上一页</span></a></li>'.format( page - 1)) else: # 不可向上翻页 page_str_list.append( '<li class="disabled"><a href="#" aria-label="Previous"><span aria-hidden="true">上一页</span></a></li>') # 循环生成11个html标签 并格式化 for i in range(start_page, end_page + 1): # 前取后不取 # 标记当前页 if i == page: page_str_list.append(' <li class="active"><a href="/preNumber/list/?page={}">{}</a></li>'.format(i, i)) else: page_str_list.append(' <li><a href="/preNumber/list/?page={}">{}</a></li>'.format(i, i)) # 向下翻页 if page < total_page_count: # 可向下翻页 page_str_list.append( '<li><a href="/preNumber/list/?page={}" aria-label="Previous"><span aria-hidden="true">下一页</span></a></li>'.format( page + 1)) else: # 不可向下翻页 page_str_list.append( '<li class="disabled"><a href="#" aria-label="Previous"><span aria-hidden="true">下一页 </span></a></li>') # 尾页 page_str_list.append( '<li><a href="/preNumber/list/?page={}" aria-label="Previous"><span aria-hidden="true">尾页</span></a></li>'.format( total_page_count)) # 元素都拼接成一个长字符串 ,mark_safe 标记这个字符串是安全的,页面才展示他的样式 page_str = mark_safe(''.join(page_str_list)) # select * from app01_PrettyNum order by level desc ; 按level倒序排列 ,大的在前面 # 一页展示10条数据 ,列表切片处理 obj_list = models.PrettyNum.objects.filter(**search_dict).order_by('-level')[start:end] # 传入字典要加 ** content = { 'obj_list': obj_list, 'search_content': search_data, 'page_list': page_str, } return render(request, 'prettyNum_list.html', content)