【问题标题】:paginator function not working in django?分页器功能在 django 中不起作用?
【发布时间】:2021-07-28 04:31:51
【问题描述】:

我的问题是我想每页只检索 6 个对象,但每页显示全部 10 个

我的看法

def home(request):
    if request.method == 'GET':

        entry = Entry.objects.all().order_by('date_added')
        # top_rated = Entry.objects.annotate(
        #     no_of_likes=Count('likes')).order_by('-no_of_likes')[:2]
        pages = Paginator(entry, 6)

        if request.GET.get('page'):
            print('executed')
            page_num = request.GET.get('page')
            pages = pages.page(page_num)

        entries = pages.object_list
    print(len(entries))
    return render(request, 'base/base.html', {'entries': entries,
                                              'pages': pages})

【问题讨论】:

  • 你是在模板中使用entries还是pages来渲染数据?您如何检查它是否每页返回 10 个?
  • 我正在返回页面

标签: django django-pagination django-viewflow


【解决方案1】:

您以冗余/不完整(未处理)检查并将不同对象分配给同一变量的方式编写代码,从而导致您看到的问题。基本上发生的事情是您的条件if request.GET.get('page'): 评估为False 可能是因为page 不存在于查询字符串中。这意味着entries = pages.object_list 为您提供完整的查询集。

请尝试以下方法:

def home(request):
    entry = Entry.objects.all().order_by('date_added')
    pages = Paginator(entry, 6)
    page_number = request.GET.get('page')
    page = paginator.get_page(page_number)
    entries = page.object_list
    return render(request, 'base/base.html', {'entries': entries, 'page': page})

【讨论】:

    猜你喜欢
    • 2013-01-30
    • 2018-03-10
    • 1970-01-01
    • 2011-03-04
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    相关资源
    最近更新 更多