Django 靓号管理--搜索与分页

Django 靓号管理--搜索与分页

搜索

数字

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()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值