@app.route('/profile<int:id>',methods=['POST','GET'])
def profile(id):
id13=session['id']
id_profile=id
search=None
row=None
if id13 != id_profile:
return redirect(url_for('logout'))
if id13 == "" :
return redirect(url_for('logout'))
if request.method=="POST":
search2=request.form['search']
sql="SELECT * FROM muzeu WHERE name LIKE '%"+search2+"%' "
con.execute(sql)
search=con.fetchall()
if request.method=="POST":
insert1=request.form["insert1"]
insert2=request.form["insert2"]
sql2="INSERT INTO comments VALUES('','"+insert1+"','"+insert2+"')"
con.execute(sql2)
sql3="SELECT * FROM comments "
con.execute(sql3)
row=con.fetchall()
return render_template("profile.html",search=search,row=row)
and my html page forms
<form method="POST" action="">
<div class="input-group">
<input type="text" class="form-control" name="search" placeholder="Search">
<div class="input-group-btn">
<button class="btn btn-default" type="submit" name="submit1">
<i class="glyphicon glyphicon-search"></i>
</button>
</div>
</div>
</form>
<form method="POST">
<div class="input-group">
<span class="input-group-addon">Nume</span>
<input id="msg" type="text" class="form-control" name="insert1" placeholder="Additional Info">
</div>
<div class="input-group">
<span class="input-group-addon">Descriere</span>
<input id="msg" type="text" class="form-control" name="insert2" placeholder="Additional Info">
</div>
<input type="submit" name="submit2" class="btn btn-primary btn-md">
</form>
我试着学习烧瓶,但我无法解决这个问题
我尝试使用搜索,插入和发送插入来制作个人资料页面。
在submition之后我得到http错误400错误请求
&#34;浏览器(或代理)发送了此服务器无法理解的请求。&#34;
有什么帮助吗?
答案 0 :(得分:1)
浏览器只能提交一个表单。您尝试处理两者中的数据,但未提交的数据不会存在于request.form
中,并会引发400错误。
您需要能够区分提交的表单。在提交按钮中添加名称和值,并检查返回的值以了解要执行的处理。您通过添加带有名称的按钮走在正确的轨道上,但您对它们并不一致,并且没有在Flask中检查它们的价值。
<!-- in the search form -->
<button type=submit name=action value=search>
<!-- in the second form -->
<button type=submit name=action value=comment>
if request.method == 'POST':
if request.form['action'] == 'search':
# do search action
elif request.form['action'] == 'comment':
# do comment action
在这种情况下,使用不同的视图处理搜索和评论更有意义。创建两个单独的视图,并将表单指向正确的URL。
<form method=post action="{{ url_for('search') }}">
<form method=post action="{{ url_for('comment') }}">