解决Django省略分页的PageNotAnInteger错误或禁用省略号链接
Django 省略式分页:禁用省略号链接解决点击报错问题
你已经通过Paginator.get_elided_page_range实现了1,2,3...8,9,10形式的省略分页,但点击分页中的...时会触发PageNotAnInteger错误——原因是省略号并非有效页码,却被渲染成了可点击的链接。解决方法很简单,在模板中区分页码和省略号,不为省略号生成链接即可:
修改后的 authors.html 代码
<!-- 作者列表部分 --> {% for author in authors %} <p>{{ author }}</p> {% endfor %} <!-- 分页部分 --> {% for i in elided_data %} {% if i == "..." %} <span>{{ i }}</span> {% else %} <a href="?page={{ i }}">{{ i }}</a> {% endif %} {% endfor %}
原理说明
get_elided_page_range返回的迭代器中,实际页码是整数类型,而省略号是字符串类型的"..."。通过模板中的条件判断,我们只为整数页码生成可点击的链接,省略号则用普通文本(或<span>标签)展示,这样就避免了点击省略号触发无效请求的问题。
内容的提问来源于stack exchange,提问作者Bashar
相关产品推荐
相关产品推荐

