给靓号列表页面加个搜索框
分页
搜索页面跳转到当前页面
页面处理逻辑
def pretty_list(request):
import copy
data_dict = {}
search_data = request.GET.get('q', "")
if search_data:
data_dict['mobile__contains'] = search_data
# 计算出当,显示当前页的前5页,后5页
# 根据用户想要获取的页码确定起始位置
page = int(request.GET.get('page', 1))
page_size = 10 # 每页展示10条数据
start = (page - 1) * page_size
end = page * page_size
total_count = models.PrettyNum.objects.filter(**data_dict).count()
queryset = models.PrettyNum.objects.filter(**data_dict).order_by("-level")[start:end]
total_page_count, div = divmod(total_count, page_size)
if div:
total_page_count += 1
# 生成页码,传给前端
plus = 5
# 如果总的页数小于等于11就不设置翻页了,就页码都显示出来
if total_page_count <= 2 * plus + 1:
start_page = 1
end_page = total_page_count + 1
else:
# 否则数据库的总页数大于11页就,根据当前所选页面的值,展示前
# 5页和后5页
if page <= plus:
# 当前页面小于5,则前面的就
start_page = 1
end_page = 2 * plus + 1
else:
# 当前页+5 大于总页面的时候
if page + plus > total_page_count:
start_page = total_page_count - 2 * plus
end_page = total_page_count
else:
start_page = page - plus
end_page = page+plus+1
from django.utils.safestring import mark_safe
page_str_list = []
page_str_list.append('<li><a href="?page={}">首页</a></li>'.format(1))
# 上一页,也就是当前页+1
# 但是要处理第一页翻到0的情况
if page > 1:
prev = '<li><a href="?page={}">上一页</a></li>'.format(page - 1)
else:
prev = '<li><a href="?page={}">上一页</a></li>'.format(1)
page_str_list.append(prev)
for i in range(start_page, end_page):
if i == page:
ele = '<li class="active"> <a href="?page={}">{}</a></li>'.format(i, i)
else:
ele = '<li> <a href="?page={}">{}</a></li>'.format(i, i)
page_str_list.append(ele)
# 下一页,要考虑页面+1大于总页数的情况
if page < total_page_count:
prev = '<li><a href="?page={}">下一页</a></li>'.format(page + 1)
else:
prev = '<li><a href="?page={}">下一页</a></li>'.format(total_page_count)
page_str_list.append(prev)
page_str_list.append('<li><a href="?page={}">尾页</a></li>'.format(total_page_count))
page_str_list = mark_safe("".join(page_str_list))
return render(request, 'pretty_list.html',
{'queryset': queryset, "search_data": search_data, "page_string": page_str_list})
然后前端页面这样写
然后需要在搜索的时候也保留分页的条件
**
时间插件
**
非MOdelForm版本
ModelForm版本,引入一样