最新Python的web開(kāi)發(fā)全家桶(django+前端+數(shù)據(jù)庫(kù))
2023-06-23 18:36 作者:rearearaerae | 我要投稿

def pretty_num_list(request): """ 搜索 """ search_data = request.GET.get('search_data', '') # 接收查詢條件 search_dict = {} # 空的話默認(rèn)搜索全部 if search_data: # 有搜索要求 # 向數(shù)據(jù)庫(kù)搜索包含 輸入的號(hào)碼 search_dict = { 'mobile_number__contains': search_data, # 模糊查詢 } # obj_list = models.PrettyNum.objects.filter(mobile_number__contains=search_data) """ 分頁(yè) """ # 用戶傳入page,不傳的話默認(rèn)為1 page = int(request.GET.get('page', 1)) page_size = 10 # 每頁(yè)展示10條數(shù)據(jù) start = (page - 1) * page_size # 頭數(shù)據(jù) end = page * page_size # 尾數(shù)據(jù) # 數(shù)據(jù)庫(kù)數(shù)據(jù)的總條數(shù) int data_count = models.PrettyNum.objects.filter(**search_dict).order_by('-level').count() # total_page_count:整數(shù)部分 ,m:余數(shù)部分 total_page_count, m = divmod(data_count, 10) if m > 0: # 存在余數(shù) total_page_count += 1 # 顯示的頁(yè)數(shù) plus = 5 # 如果總頁(yè)數(shù)不滿11條,則就展示這么多即可 if total_page_count <= 2 * plus + 1: start_page = 1 end_page = 11 else: # 數(shù)據(jù)庫(kù)數(shù)據(jù)比較多>11頁(yè) # 當(dāng)前頁(yè)<=5 if page <= plus: # start_page = 1 end_page = 2 * plus + 1 # 當(dāng)前頁(yè)>5 else: # 去除一直往后翻頁(yè)(即使最后幾頁(yè)沒(méi)數(shù)據(jù)) 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 = [] # 首頁(yè) page_str_list.append('<li><a href="/preNumber/list/?page={}" aria-label="Previous"><span aria-hidden="true">首頁(yè)</span></a></li>'.format(1)) if page > 1: # 可向上翻頁(yè) page_str_list.append( '<li><a href="/preNumber/list/?page={}" aria-label="Previous"><span aria-hidden="true">上一頁(yè)</span></a></li>'.format( page - 1)) else: # 不可向上翻頁(yè) page_str_list.append( '<li class="disabled"><a href="#" aria-label="Previous"><span aria-hidden="true">上一頁(yè)</span></a></li>') # 循環(huán)生成11個(gè)html標(biāo)簽 并格式化 for i in range(start_page, end_page + 1): # 前取后不取 # 標(biāo)記當(dāng)前頁(yè) 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)) # 向下翻頁(yè) if page < total_page_count: # 可向下翻頁(yè) page_str_list.append( '<li><a href="/preNumber/list/?page={}" aria-label="Previous"><span aria-hidden="true">下一頁(yè)</span></a></li>'.format( page + 1)) else: # 不可向下翻頁(yè) page_str_list.append( '<li class="disabled"><a href="#" aria-label="Previous"><span aria-hidden="true">下一頁(yè) </span></a></li>') # 尾頁(yè) page_str_list.append( '<li><a href="/preNumber/list/?page={}" aria-label="Previous"><span aria-hidden="true">尾頁(yè)</span></a></li>'.format( total_page_count)) # 元素都拼接成一個(gè)長(zhǎng)字符串 ,mark_safe 標(biāo)記這個(gè)字符串是安全的,頁(yè)面才展示他的樣式 page_str = mark_safe(''.join(page_str_list)) # select * from app01_PrettyNum order by level desc ; 按level倒序排列 ,大的在前面 # 一頁(yè)展示10條數(shù)據(jù) ,列表切片處理 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)
標(biāo)簽: