搜索
数字
models.PrettyNum.objects.filter(id=12) # 等于12
models.PrettyNum.objects.filter(id_gt=12) # 大于12
models.PrettyNum.objects.filter(id_gte=12) # 大于等于12
models.PrettyNum.objects.filter(id_lt=12) # 小于12
models.PrettyNum.objects.filter(id_lte=12) # 小于等于12
data_dic = {"id__lte" :12}
models.PrettyNum.objects.filter(**data_dict)
字符串
models.PrettyNum.objects.filter(mobile="1999") # 等于1999
models.PrettyNum.objects.filter(mobile__startswith="1999") # 以1999开头
models.PrettyNum.objects.filter(mobile__endswith="1999") # 1999结尾
models.PrettyNum.objects.filter(mobile__contains="1999") # 包含999
代码
def pretty_list(request):
'''靓号列表'''
data_dict = {}
value = request.GET.get("q")
if value:
data_dict['mobile__contains'] = value
queryset = models.PrettyNum.objects.filter(**data_dict).order_by("-level") # 从数据库按照level降序取出
return render(request, 'pretty_list.html', {'queryset': queryset})
分页
代码
视图函数
def pretty_list(request):
'''靓号列表'''
data_dict = {}
value = request.GET.get("q")
if value:
data_dict['mobile__contains'] = value
page = int(request.GET.get('page', 1))
page_szie = 10
start = (page-1)*page_szie
end = page*page_szie
queryset = models.PrettyNum.objects.filter(**data_dict).order_by("-level")[start:end] # 从数据库按照level降序取出
# 数据总条数
total_count = models.PrettyNum.objects.filter(**data_dict).order_by("-level").count()
total_page_count, div = divmod(total_count, page_szie)
if div:
total_page_count += 1
# 计算当前页的前5页与后5页
plus = 5
if total_page_count <= 2*plus + 1:
start_page = 1
end_page = total_page_count +1
else:
if page <= plus:
start_page = 1
end_page = 2*plus + 1
else:
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
page_str_list = []
# 首页
page_str_list.append('<li><a href="?page={}">首页</a></li>'.format(1))
# 上一页
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)
# 下一页
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_string = mark_safe("".join(page_str_list))
return render(request, 'pretty_list.html', {'queryset': queryset, "page_string": page_string})
部分前端html代码
<ul class="pagination">
{{page_string}}
</ul>
<form method="get">
<div class="input-group" style="width: 200px">
<input type="text" name="page" class="form-control" placeholder="页码">
<span class="input-group-btn">
<button class="btn btn-default" type="submit">跳转</button>
</span>
</div>
</form>
基础
获取数据总条数
total_count = models.PrettyNum.objects.filter(**data_dict).order_by("-level").count()