我正在尝试在我的listview页面上添加搜索栏。它将第一次获取所有的post项,如果一个查询放入搜索框中并提交,它将返回一个经过筛选的queryset。它渲染得很好,但只有分页问题。对于未过滤的queryset,下一页将毫无问题地得到接下来的两篇文章,但是对于filtered queryset,我可以看到see less pages正确地反映了queryset,但是下一页得到的是非过滤queryset的第二页,而不是filtered queryset。谁能告诉我我在这里做错了什么吗。谢谢
我的模板如下所示:
{% block content %}
.....
<form action="" method="get">
<input type="text" name='q'>
<input type="submit" value="Search">
</form>
{% for post in object_list %}
....
{% endfor %}
{% if is_paginated %}
<div class="pagination">
<span class="page-links">
{% if page_obj.has_previous %}
<a href="?page={{ page_obj.previous_page_number }}"><<</a>
{% endif %}
<span class="page-current">
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}
</span>
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}">>></a>
{% endif %}
</span>
</div>
{% endif %}
我有一个类似下面的列表视图。在
^{pr2}$
让我把这个关上。有两个选项:使用隐藏字段保存用户搜索项,并使其过滤每个请求的queryset;或使用session。这是会话代码示例。我认为使用会话缓存的唯一缺点是它会在内存中缓存整个queryset,因此它会为高流量网站耗尽内存。因为我用它作为个人网站,它一点也不疼。在
查看文件
表单文件
^{pr2}$类搜索表单(形式。形式): 搜索=表格.CharField(最大长度=30)
相关问题 更多 >
编程相关推荐