为了账号安全,请及时绑定邮箱和手机立即绑定

当总项目数低于“per_page”烧瓶分页时如何处理错误 404?

当总项目数低于“per_page”烧瓶分页时如何处理错误 404?

阿晨1998 2023-08-24 10:41:51
我正在使用 Flask Python 开发一个 Web 应用程序。在我的应用程序中,有一个报告页面,显示带有 Flask 分页的结果表。在表格底部,我添加了一个名为“number_result_per_page”的“选择选项”字段,让用户选择“per_page”参数(每页的项目数)。我制作了一个 JavaScript,它使用根据用户的选择更新的“per_page”参数来重新加载页面。问题 :我的问题是,如果用户几乎在最后一页,并且他决定每页显示“100”个结果,并且要显示的结果少于 100 个,我会收到 404 错误。我确信我不是唯一遇到此类问题的人。有什么解决方案可以避免这种情况吗?或者我可以捕获这个特定的错误 404 以显示“错误”弹出窗口并重新加载正确的上一页吗?这是我的代码示例:# Route@app.route('/task_user_report/<int:task_user_id>/view', methods=['GET', 'POST'])@login_requireddef task_user_report(task_user_id):    args = request.args    per_page_task_report = args.get("per_page_task_report", 1, type=int)    actions = db_mysql.session.query(Action).filter_by(id_task_user=task_user_id)  \                        .filter(Action.id_contact==Contact.id)  \                        .paginate(page=page_task_report, per_page=per_page_task_report)        render_template(render_html,title='Task Report',legend='Task Report',actions=actions,  \                        per_page_task_report=per_page_task_report)# Template<div class="row justify-content-center" style="width: 95%;">    <div class="col-7 my-auto text-right">        <div class="text-center mt-4" style="display: inline-block;">            <nav aria-label="Pagination">                <ul class="pagination justify-content-center">                    {% for page_num in actions.iter_pages(left_edge=1,right_edge=1,left_current=1, right_current=2) %}                        {% if page_num %}                            {% if actions.page == page_num %}                                <li class="page-item active"><a class="page-link"  href="{{ url_for('task_user_report',task_user_id=task_user_id,page_task_report=page_num,per_page_task_report=per_page_task_report) }}">{{ page_num }}</a>                        {% endif %}                    {% endfor %}                </ul>            </nav>        </div>    </div></div>
查看完整描述

1 回答

?
达令说

TA贡献1821条经验 获得超6个赞

在你的paginate()通话中,error_out=False这样设置,paginate(..., error_out=False)

默认为True. 但这种行为并不总是理想的。如果您使用 Flask 作为 API 后端,这有时会导致错误。您可以通过提供空结果集或在没有返回结果时将页面默认返回一页来处理它,这取决于您。


查看完整回答
反对 回复 2023-08-24
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信