如何修复django-el-pagination滚动分页show_more标签的querystring问题?
解决django-el-pagination最后一页querystring模板解析异常问题
我之前也碰到过一模一样的情况,结合你用的django==1.11.5和django-el-pagination==3.1.0版本,这个问题的核心原因很明确:当滚动到最后一页时,视图不会生成下一页对应的querystring参数,但模板里的show_more标签还在尝试渲染这个不存在的变量,直接引发了模板解析异常。
下面是具体的解决方案:
1. 给show_more标签加条件判断(最直接有效的方法)
在你的documents/documents.html模板里,用分页对象的has_next属性判断是否还有下一页,只有存在下一页时才渲染show_more标签:
{% if page_obj.has_next %} {% show_more "加载更多..." "正在加载..." %} {% endif %}
当到达最后一页时,page_obj.has_next会返回False,此时show_more标签不会被渲染,自然就不会触发querystring变量找不到的错误。
2. 再聊聊问题本质
django-el-pagination的show_more标签,依赖视图传递的querystring变量来生成下一页的URL参数。但当处于最后一页时,视图不会生成这个变量(毕竟没有下一页需要跳转),模板在解析过程中找不到该变量,就会抛出你看到的Exception while resolving variable 'querystring'异常。
3. 额外的小检查
确认你URL里的querystring_key=page参数是正确的——它指定了分页使用的参数名是page,这本身没问题,但要确保视图里正确使用了django-el-pagination的分页逻辑(比如用page_template装饰器或者PaginationMixin)。
内容的提问来源于stack exchange,提问作者Nurzhan Nogerbek
相关产品推荐
相关产品推荐

