【问题标题】:Pagination issue in DjangoDjango中的分页问题
【发布时间】:2020-04-22 17:53:44
【问题描述】:

我的 Django 项目中有一个数据库,我正在对它进行查询。我想在不同的页面中显示回复。

如果请求为“无”,则分页工作完美。

但是每当我传递查询时,第一页都会显示我正在寻找的响应,但下一页的行为就像请求是“无”一样。

这是我的views.py

def search(request):
    query = request.GET.get('query')    

    if not query:
        products_list= Product.objects.all()        
    else:        
        products_list = Product.objects.filter(name__icontains=query)
    if not products_list.exists():
        products_list = Product.objects.filter(brand__icontains=query)

    title = "Results:  %s" % query

    paginator = Paginator(products_list, 9)
    page = request.GET.get('page',1)

    try:
        products = paginator.page(page)
    except PageNotAnInteger:        
        products = paginator.page(1)
    except EmptyPage:        
        products = paginator.page(paginator.num_pages)

    context = {
        'products': products,
        'title': title,
        'paginate': True,
    }
    return render(request, 'finder/search.html', context)

还有html:

<nav aria-label="">
  <ul class="pager">
    {% if products.has_previous %}
        <li><a href="?page={{ products.previous_page_number }}">Previous</a></li>
    {% endif %}
    {% if products.has_next %}
        <li><a href="?page={{ products.next_page_number }}">Next</a></li>
    {% endif %}
  </ul>
</nav>

【问题讨论】:

    标签: python django pagination


    【解决方案1】:

    在模板中也传递您的查询参数,否则您将无法在函数中获取查询参数

       context = {
            'products': products,
            'title': title,
            'paginate': True,
            'query': query
        }
    

    <nav aria-label="">
      <ul class="pager">
        {% if products.has_previous %}
            <li><a href="?query={{query}}&page={{ products.previous_page_number }}">Previous</a></li>
        {% endif %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-01
      • 1970-01-01
      相关资源
      最近更新 更多