【问题标题】:Django Paging With Same GET具有相同 GET 的 Django 分页
【发布时间】:2014-06-21 22:50:49
【问题描述】:

我正在尝试使用此处显示的分页库https://docs.djangoproject.com/en/dev/topics/pagination/。我遇到的问题是,当我转到下一页时,我失去了上一个 GET 请求的状态。

例如。 www.mysite.com/search-results/?Make=BMW

然后,当我按下下一页时,我失去了上次获取的 Make=BMW 部分。

www.mysite.com/search-results/?page=2

有没有一种方法可以为我的下一页提交新的 GET,而无需在我的 url 中列出该信息并导致它丢失状态?

这是我获取查询集和使用库的方法。

        listings = Listing.objects.all()

        paginator = Paginator(listings, 25)

        page = request.GET.get('page')
        try:
            listing_info = paginator.page(page)
        except PageNotAnInteger:
            listing_info = paginator.page(1)
        except EmptyPage:
            listing_info = paginator.page(paginator.num_pages)

【问题讨论】:

    标签: django pagination


    【解决方案1】:

    我猜您在模板中链接到的文档中使用了<href> 示例?即:

    <a href="?page={{ listing_info.next_page_number }}">next</a>
    

    问题在于它只会返回您当前的 url 加上您提供的查询参数,这只是 ?page 参数。

    我认为你可以用两种不同的方法来解决这个问题。首先,您需要在视图中获取Make 参数并将其传递给您的模板。尝试添加类似:

    make = request.GET.get('Make', None)
    ...
    return render_to_response('list.html', {"listing_info": listing_info, "make": make})
    

    然后,您需要调整模板中的href 标签,使其也传递make

    <a href="?Make={{ make }}?page={{ listing_info.next_page_number }}">next</a>
    

    您可能需要稍微尝试一下,如果它Make = None(如果可能的话),还要处理如何处理。

    【讨论】:

      猜你喜欢
      • 2012-10-03
      • 2017-12-31
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      • 2011-08-05
      • 2015-01-22
      • 1970-01-01
      相关资源
      最近更新 更多