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

我正在使用 Flask Python 开发一个 Web 应用程序。

在我的应用程序中,有一个报告页面,显示带有 Flask 分页的结果表。

在表格底部,我添加了一个名为“number_result_per_page”的“选择选项”字段,让用户选择“per_page”参数(每页的项目数)。

https://img1.mukewang.com/64e6c39100018c9d06300165.jpg

我制作了一个 JavaScript,它使用根据用户的选择更新的“per_page”参数来重新加载页面。

问题 :

我的问题是,如果用户几乎在最后一页,并且他决定每页显示“100”个结果,并且要显示的结果少于 100 个,我会收到 404 错误。

https://img2.mukewang.com/64e6c39b00013ed706530100.jpg

我确信我不是唯一遇到此类问题的人。有什么解决方案可以避免这种情况吗?


或者我可以捕获这个特定的错误 404 以显示“错误”弹出窗口并重新加载正确的上一页吗?


这是我的代码示例:


# Route

@app.route('/task_user_report/<int:task_user_id>/view', methods=['GET', 'POST'])

@login_required

def 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>

阿晨1998
浏览 153回答 1
1回答

达令说

在你的paginate()通话中,error_out=False这样设置,paginate(..., error_out=False)默认为True.&nbsp;但这种行为并不总是理想的。如果您使用 Flask 作为 API 后端,这有时会导致错误。您可以通过提供空结果集或在没有返回结果时将页面默认返回一页来处理它,这取决于您。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript