程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Flask 分页重定向大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Flask 分页重定向?

开发过程中遇到Flask 分页重定向的问题如何解决?下面主要结合日常开发的经验,给出你关于Flask 分页重定向的解决方法建议,希望对你解决Flask 分页重定向有所启发或帮助;

我有一个使用 FlasksqlAlchemy 的网上商店,我在主页上使用如下路线实现了分页:

@app.route('/')
@app.route('/home')
def home():
    page = request.args.get('page',1,type=int)
    data = Product.query.paginate(page=page,per_page=6)
    return render_template('home.HTML',data=data)

我遇到的问题是这样的搜索功能:

@app.route('/search',methods=['GET','POST'])
def search():
    query = request.args['search']
    if len(query) > 0:
        page = request.args.get('page',type=int)
        data = Product.query.filter(Product.@R_419_6889@.@R_295_8616@(f"%{query}%")).paginate(page=page,per_page=6)
        if Data is not None:
            return render_template('home.HTML',data=data)
        elif Data is None:
            return redirect(url_for('home'))
    if len(query) == 0:
        return redirect(url_for('home'))

这是我的 search 表单:

<li class="nav-item">
 <form class="form-inline" action="{{ url_for('search') }}">
   <input class="form-control mr-sm-2 ml-2" @R_419_6889@="search" type="search" placeholder="Търсене" aria-label="Search">
   <button class="btn btn-outline-info my-2 my-sm-0" type="submit"><i class="fa fa-search"></i></button>
 </form>
</li>

这是我的 jinja2 中页码的 home.HTML 代码:

{% for page_num in data.iter_pages(left_edge=1,right_edge=1,left_current=1,right_current=2) %}
  {% if page_num %}
     {% if Data.page == page_num %}
       <a class="btn btn-info mb-4" href="{{ url_for('home',page=page_num) }}">{{ page_num }}</a>
     {% else %}
       <a class="btn btn-outline-info mb-4" href="{{ url_for('home',page=page_num) }}">{{ page_num }}</a>
     {% endif %}
   {% endif %}
{% endfor %}

当我搜索产品时,查询会显示正在搜索的项目,但如果有多页结果,当我点击页码时,它会重定向到 home.HTML其中包含第一个的所有数据路线。

有没有办法让搜索后的结果和search函数的页面保持一致?

解决方法

您可以使用 javascript 更新 url 中的查询

此函数将在当前 url 中使用两个参数搜索键,如果存在则更新它,否则添加它。

js

function url_manager(key,value){
const url = new URL(window.LOCATIOn.href);
url.searchParams.set(key,value );
window.LOCATIOn.replace(url)
}

用按钮标签<button class="page_num_btn_class btn btn-info mb-4" type="button">{{ page_num }}</button>替换锚标签

注意 - 你必须包含 jquery

<script src="https://code.jquery.com/jquery-3.1.0.js" ></script>

你可以在按钮上调用点击事件

$(".page_num_btn_class").click(function (E){
url_manager("page",$(this).text())
})

大佬总结

以上是大佬教程为你收集整理的Flask 分页重定向全部内容,希望文章能够帮你解决Flask 分页重定向所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。