我在views.py 中使用过滤器配置分页器时遇到问题。 当搜索结果拉出多页记录并且用户单击分页的第 1、2、3 页(例如进入下一页)时,它会破坏过滤器,因此会从数据库中拉出所有记录,而不是过滤的记录.
我正在使用 Bootstrap 5.0.2。这是我的代码:
views.py:
def group_search(request):
if request.method == "GET":
g_searched = request.GET.get("g_searched", 1)
# Cache the variable "searched" for views.group_search_csv
request.session['csv_searched'] = g_searched
# multiple columns selected in search
group_searched = Binders.objects.filter(Q(group_id__contains=g_searched))
group_count = group_searched.count()
p = Paginator(group_searched, 20)
page = request.GET.get('page', 1)
page_obj = p.get_page(page)
pg_nums = "a" * page_obj.paginator.num_pages
context = {'g_searched': g_searched, 'page_obj': page_obj, 'pg_nums': pg_nums, 'group_count': group_count}
return render(request, "group_search.html", context)
else:
return render(request, "group_search.html", {})
Group_search.html:(我没有放置整个html页面的代码,因为大部分与这个问题无关。)
<!-- ======= Sub Menu Section ======= -->
<section class="breadcrumbs">
<div class="container-fluid">
<div class="d-flex justify-content-around align-items-center">
{% if g_searched %}
<h2>You searched for group {{ g_searched }}</h2>
{% else %}
<h2>Search field is empty!</h2>
{% endif %}
<!-- added blank spaces before the forms for better spacing-->
<a> </a>
<form action="{% url 'group_search' %}" class="d-flex" method=GET>
<!-- {% csrf_token %}-->
<input aria-label="Group Search" class="form-control me-2 " name="g_searched" placeholder="Search GROUPs" type="search">
<button class="btn btn-outline-info" type="submit">Search</button>
</form>
<!-- added blank spaces after the forms for better spacing-->
<a> </a>
<ol>
<li><a href="{% url 'binders' %}">Binders Listing</a></li>
<li><a href="{% url 'group_search_csv' %}">Download Spreadsheet</a></li>
<li>Search Result = <b>{{ group_count }}</b></li>
</ol>
</div>
</div>
</section><!-- End Sub Menu Section -->
<!-- ======= Page Navigation Section ======= -->
<nav aria-label="Page navigation example">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item"><a class="page-link" href="?page=1">First</a></li>
<li class="page-item"><a class="page-link" href="?page={{ page_obj.previous_page_number }}">Previous</a></li>
{% endif %}
{% for i in pg_nums %}
<li class="page-item"><a class="page-link" href="?page={{ forloop.counter }}">{{ forloop.counter }}</a></li>
{% endfor %}
{% if page_obj.has_next %}
<li class="page-item"><a class="page-link" href="?page={{ page_obj.next_page_number }}">Next</a></li>
<li class="page-item"><a class="page-link" href="?page={{ page_obj.paginator.num_core }}">Last</a></li>
{% endif %}
</ul>
</nav>
我已经到处寻找解决这个问题的方法,但还没有找到任何东西。如果您发现我的代码有什么问题,请告诉我。