chelseaNB1 2023-02-22 09:49 采纳率: 75.7%
浏览 19

请问我的django分页组件,在后端向前端传数据时,如果是列表套字典的形式就可以正常分页,我传一个二维数组的形式,分页组件就失灵了,求帮我看一下问题在哪

如题
下面这是分页组件的代码,也是在网上学的

from django.utils.safestring import mark_safe
class Pagination(object):
    def __init__(self, request, queryset, page_size=15, page_param="page", plus=5):
        from django.http.request import QueryDict
        import copy
        query_dict = copy.deepcopy(request.GET)
        query_dict._mutable = True
        self.query_dict = query_dict
        self.page_param = page_param
        page = request.GET.get(page_param, "1")
        if page.isdecimal():
            page = int(page)
        else:
            page = 1
        self.page = page
        self.page_size = page_size
        self.start = (page - 1) * page_size
        self.end = page * page_size
        self.page_queryset = queryset[self.start:self.end]
        total_count = len(queryset)
        total_page_count, div = divmod(total_count, page_size)
        if div:
            total_page_count += 1
        self.total_page_count = total_page_count
        self.plus = plus
    def html(self):
        if self.total_page_count <= 2 * self.plus + 1:
            start_page = 1
            end_page = self.total_page_count
        else:
            if self.page <= self.plus:
                start_page = 1
                end_page = 2 * self.plus + 1
            else:
                if (self.page + self.plus) > self.total_page_count:
                    start_page = self.total_page_count - 2 * self.plus
                    end_page = self.total_page_count
                else:
                    start_page = self.page - self.plus
                    end_page = self.page + self.plus
        page_str_list = []
        self.query_dict.setlist(self.page_param, [1])
        page_str_list.append('
  • 首页
  • '
    .format(self.query_dict.urlencode())) if self.page > 1: self.query_dict.setlist(self.page_param, [self.page - 1]) prev = '
  • 上一页
  • '
    .format(self.query_dict.urlencode()) else: self.query_dict.setlist(self.page_param, [1]) prev = '
  • 上一页
  • '
    .format(self.query_dict.urlencode()) page_str_list.append(prev) for i in range(start_page, end_page + 1): self.query_dict.setlist(self.page_param, [i]) if i == self.page: ele = '
  • {}
  • '
    .format(self.query_dict.urlencode(), i) else: ele = '
  • {}
  • '
    .format(self.query_dict.urlencode(), i) page_str_list.append(ele) if self.page < self.total_page_count: self.query_dict.setlist(self.page_param, [self.page + 1]) prev = '
  • 下一页
  • '
    .format(self.query_dict.urlencode()) else: self.query_dict.setlist(self.page_param, [self.total_page_count]) prev = '
  • 下一页
  • '
    .format(self.query_dict.urlencode()) page_str_list.append(prev) self.query_dict.setlist(self.page_param, [self.total_page_count]) page_str_list.append('
  • 尾页
  • '
    .format(self.query_dict.urlencode())) page_string = mark_safe("".join(page_str_list)) return page_string

    下面这个是我传二维数组的视图函数

    #小波变换
    def www(request):
        file_object = request.FILES.get("file")
        if file_object:
            data = xlrd.open_workbook(filename=None, file_contents=file_object.read())
            sheet = data.sheet_by_index(0)
            nrows = sheet.nrows
            list = []
            for i in range(1, nrows):
                list.append(np.array(sheet.row_values(i)))
            arr = np.array(list)
            p = pre()
            queryset = p.wave(arr)
            queryset = np.round(queryset,6)
            page_object = Pagination(request, queryset)  ########加这一句分页
            context = {"queryset": page_object.page_queryset,  # 分完页的数据
                       "page_string": page_object.html()  # 页码
                       }
            return render(request, 'wave2.html', context)
        return render(request,'wave.html')
    

    下面这个是对应的前端页面

    • 写回答

    1条回答 默认 最新

    • 王大师王文峰 企业官方账号 2023-02-22 10:20
      关注

      望采纳,Django分页组件需要接收一个可迭代的对象,所以传入的数据必须是一个可迭代的对象,比如列表、字典等。如果传入的是一个二维数组,则可能会导致分页组件失灵。

      评论

    报告相同问题?

    问题事件

    • 创建了问题 2月22日

    悬赏问题

    • ¥15 尝试访问%1服务的windows注册表时遇到问题。必须先解决此问题,然后才能运行安装过程。(请确认您正在使用管理员权限运行)373
    • ¥15 (关键词-运算放大器)
    • ¥15 关于#游戏策划#的问题:当浏览器输入兑换码,疯狂点击领取按钮,邮箱马上到账几十个兑换码礼包
    • ¥15 虚拟机打不开,怎么解决
    • ¥15 为什么游戏兑换码能被重复领取
    • ¥30 (急!)java实现二叉链表构建二叉树,实现相关功能
    • ¥15 C#tekloa节点插件小项
    • ¥20 脑电信号的局部场电位分析
    • ¥30 Diodes 霍尔开关AH337已经obselete,他的升级替代料【不改变现有电路图】
    • ¥15 python爬虫IndexError: list index out of range