大佬教程收集整理的这篇文章主要介绍了Flask 分页重定向,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个使用 Flask
和 sqlAlchemy
的网上商店,我在主页上使用如下路线实现了分页:
@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,请注明来意。