- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
TypeError: object of type 'NoneType' has no len()
当我将分页添加到 ListView 时发生。这发生在我单击 next
按钮转到第 2 页时。它应该还有两个结果要显示。
我猜这是因为 search
的值被删除或 queryset
以某种方式变为 none,当我单击下一步(转到第 2 页),然后返回 none。
书籍/浏览量:
class SearchResultView(generic.ListView):
template_name = 'book/search.html'
model = Book
context_object_name = 'book_list'
paginate_by = 2
def get_queryset(self):
queryset = super().get_queryset()
search = self.request.GET.get('search')
if search:
return Book.objects.filter(
title__icontains=search
)
book/templates/book.html:
<form class="form-inline my-2 my-lg-0" method="get" action="{% url 'book:search' %}">{% csrf_token %}
<input style="font-size: 12px; width: 200px" class="form-control mr-sm-2" name="search" type="search" placeholder="Book Name" aria-label="Search">
<button class="btn btn-outline-primary my-2 my-sm-0" type="submit">Search</button>
</form>
book/templates/search.html:
<div id="customContents">
{% block customContents %}
{% if book_list %}
<ul>
{% for book in book_list %}
<li>{{ book.title }}</li>
{% empty %}
{% endfor %}
</ul>
{% if is_paginated %}
<div class="pagination">
<span class="page-links">
{% if page_obj.has_previous %}
<a href="?page={{ page_obj.previous_page_number }}">previous</a>
{% endif %}
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}">next</a>
{% endif %}
</span>
</div>
{% endif %}
{% else %}
<h3> No result found. </h3>
{% endif %}
{% endblock %}
</div>
书/网址:
app_name = 'book'
urlpatterns = [
path('', views.HomePageView.as_view(), name='home'),
path('search/', views.SearchResultView.as_view(), name='search'),
path('<slug:slug>/', views.BookDetailView.as_view(), name='detail'),
]
只有这样才能正常工作:
class SearchResultView(generic.ListView):
template_name = 'book/search.html'
model = Book
context_object_name = 'book_list'
paginate_by = 2
queryset = Book.objects.filter(
title__icontains='Python'
)
最佳答案
您覆盖了查询字符串中的 search
参数,因为您没有重复它。随着时间的推移积累了一堆答案in this question关于如何处理。
这是你要纠正的错误:
<a href="?page={{ page_obj.previous_page_number }}">previous</a>
(“下一个”链接也是如此)。
然后一切都应该像宣传的那样工作。
或者,您可以使搜索参数成为 URL 本身的一部分,但这具有使搜索可缓存的副作用(这取决于您的网站是好是坏)并且需要 javascript 将输入移动到 url。
要完全在 Django 中执行此操作,您将搜索结果传输到 RedirectView除了验证搜索参数然后重定向到实际的搜索列表外,它什么都不做。
同样,这种方法也有一些副作用,最显着的是对后退按钮的影响。
因此,我建议您查看链接答案中的查询字符串修改,如果您想走不同的路线,请根据您的喜好发布另一个问题。
关于python - Django - 类型错误 : object of type 'NoneType' has no len() occurred while doing Pagination,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52127980/
谁能用一个例子来解释 BooleanQuery 中 lucene 中的 BooleanClause.Occur.Must 和 BooleanClause.Occur.SHOULD 之间的区别? 最佳答
正如标题所说,multiset 在所有相同值的范围末尾插入一个值。 (例如:在多重集 1,2,2,3 中插入 2 使其成为 1,2,2,/*new*/2,3)。 如何在所有相同值范围的开头插入新值?
所以这是与此(Inserting in a multiset: before the first occurence of that value instead of after the last o
我试图从我的 WCF .Net Framework 4.5 向 API rest 发布一个文件。这是我的代码: public string CreateConclusion(string[] inst
我的 SQL 查询获取固件的错误修复验证列表,例如def-456 是一张票,要求我对产品进行固件测试。 def-456 有几个记录结果的子任务。结果记录为:id:abc-123、abc-124、abc
我想删除文件中多次出现的行,但想保留某些行。我该怎么做? 这是我的文件的一部分,我想更改它: §M: 1, K: 2 name, time, cycle, instr, L1-mi
我正在 SSMS 中测试 SQL 2016 Live Query Stats,每次尝试时都会收到错误消息“执行批处理时出错。错误消息是:发生一个或多个错误。”并且不返回任何结果集。一位同事试过了,对他
我们在 JBoss 4.2 上设置了一个水平集群。在我们将缓存模式从 REPL_ASYNC 更改为 REPL_SYNC 以解决问题之前, session 复制工作正常。我们开始看到一些 session
我正在尝试将 MVC 网站发布为 Azure 网络角色。 当我在本地运行它时,一切正常。 但是当我将其发布到 Azure 并浏览某些 MVC 操作时,我收到此错误: Server Error in '
假设一个静态库 libfoo 依赖于另一个静态库 libbar 的某些功能。这些和我的应用程序都是用 D 编写的。如果我的应用程序只直接使用 libfoo,并且只调用 libfoo 中的函数而不引用
我正在尝试在 Eclipse Helios 上安装 SVN 客户端, 我已经从 Collaboration 节点安装了所有 SVN 模块(更新中), 现在重启后我可以选择一个连接器 出现“颠覆性连接器
我在 cakephp 中有一些代码会产生错误。 这是 PHP Controller : $this->loadModel( 'Vote' ); //Newly added by amit start
我需要有关 Java 代码的帮助。 这就是问题所在: 输入示例:AaaaaAa 输出:A 出现 7。 问题是我需要它来忽略案例。 请帮助我,我的代码工作正常,只是它不忽略大小写。 import jav
我正在为 J2ME 开发一个应用程序,有时它完全卡住并且 AMS 需要相当长的时间来关闭它.在我看来,这像是一个死锁问题。 你能告诉我什么会导致死锁吗?例如,如果对象调用其自身的另一个同步方法,调用对
尝试将 DEXguard 安装到 Eclipse 中的简单应用程序时出现以下错误: Errors occurred during the build. Errors running builder '
在 SAS 中,假设我有一个名为“person_groups”的数据集。它有两个变量,名为“person”和“group”。该数据集只是将每个人分配到一个组。 我如何从这个数据集中删除所有在他们的组中
有人知道如何在表达式中找到第 n 次出现的字符串以及如何用正则表达式替换它吗? 例如我有以下字符串 txt sub("(^(.*?-){4}.*?)-(.*?-.*?)-", "\\1|\\3||"
是否有一个包允许我为同一个缓冲区设置多个 Occur 结果缓冲区(例如 grep-a-lot: http://www.emacswiki.org/emacs/grep-a-lot.el )。 我在分析
我一直在寻找这个,但似乎无法找到它。 我有一个带有 try {} catch {} 语句的脚本。如果没有发生错误,我想添加一个操作。 例如 try { something } catch { "Err
我正在从 iPhone 应用程序将照片上传到 Facebook。我已经让它工作了,只是有时它会返回“发生未知错误”。我不确定问题是什么。这种情况发生的概率约为 75%。 其他人也遇到过这种情况吗? 最
我是一名优秀的程序员,十分优秀!