欢迎光临散文网 会员登陆 & 注册

最新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)


最新Python的web开发全家桶(django+前端+数据库)的评论 (共 条)

分享到微博请遵守国家法律