Python Flask-避免在动态表上过帐返回到渲染模板

Python Flask-避免在动态表上过帐返回到渲染模板,python,mysql,flask,Python,Mysql,Flask,我有一个使用flask的python应用程序,它有以下核心路线: @app.route('/test_limit', defaults={'page':1}) @app.route('/test_limit/page/<int:page>') def test_results_limit(page): perpage=10 startat=page*perpage results = [] cursor = db.cursor() cursor

我有一个使用flask的python应用程序,它有以下核心路线:

@app.route('/test_limit', defaults={'page':1})
@app.route('/test_limit/page/<int:page>')
def test_results_limit(page):
    perpage=10
    startat=page*perpage
    results = []
    cursor = db.cursor()
    cursor.execute('SELECT * from pi_fb_limit limit %s, %s;', (startat,perpage))
    table = list(cursor.fetchall())
    return render_template('results_limits.html', table=table)

@app.route('/infringement/FB/<int:id>')
def infringement(id):
    cursor = db.cursor()
    cursor.execute('UPDATE p_test_search SET infringement = ''TRUE'' WHERE ID = %s', (id))  
    db.commit()
    return render_template('results_limits.html')
@app.route('/test_limit',默认值={'page':1})
@应用程序路线('/test_limit/page/'))
def测试结果限制(第页):
每页=10
startat=每页*页
结果=[]
cursor=db.cursor()
cursor.execute('SELECT*from pi_fb_limit%s,%s;',(开始,每页))
table=list(cursor.fetchall())
返回渲染模板('results\u limits.html',table=table)
@app.route(“/invalition/FB/”)
def侵权(id):
cursor=db.cursor()
cursor.execute('UPDATE p_test_search SET invalicing='TRUE',其中ID=%s',(ID))
db.commit()
返回渲染模板('results\u limits.html')
在我的HTML文件“result_limits.HTML”中,我有以下迭代MySQL资源的HTML代码:

 </table>
<tbody>
         {% for tab in table %}
            <tr class="zoomin">
               <th> {{tab[0]}} </th>
               <td> {{tab[9]}} </td>
               <td><button type="button" onclick="location.href='/infringement/FB/'+{{tab[0]}};return false;" class="btn btn-danger">Infringement</button></td>
            </tr>   
         {% endfor %}
        </tbody>
  </table>

{表%中的制表符为%1}
{{tab[0]}
{{tab[9]}
侵权
{%endfor%}
一切正常,但我的问题是,当上面的按钮以友好方式调用route@app.route('/invertion/FB/')时,浏览器被重定向到 result_limits.html。 相反,我希望避免任何重定向,并保持在同一页上,每个行按钮都在创建post(以更新记录)

有什么建议吗? 非常感谢。 雷格斯
SL

您需要使用JavaScript提交数据,而无需重新加载页面

比如:

功能提交(id){
this.removeAttribute('onclick');//防止两次sumbitting。
var x=新的XMLHttpRequest();
x、 open('GET','/invalition/FB/'+id,true);
x、 onload=函数(){
this.textContent='已发送侵权报告!';
}
x、 onerror=函数(错误){
(console.error | | console.log)(错误);
this.textContent='发生错误。请重试';
this.onclick=function(){sumbit_(id);}
}
this.textContent='发送侵权报告…';
x、 发送(空);
}

侵权