Python 如何在一个flask函数中从单个页面获取多个html表单 @app.route('/profile',methods=['POST','GET'] def配置文件(id): id13=会话['id'] id_profile=id 搜索=无 行=无 如果id13!=id_配置文件: 返回重定向(url_用于('logout')) 如果id13==“”: 返回重定向(url_用于('logout')) 如果request.method==“POST”: search2=request.form['search'] sql=“从muzeu中选择*,其中名称类似“%”+search2+“%”” con.execute(sql) search=con.fetchall() 如果request.method==“POST”: insert1=request.form[“insert1”] insert2=request.form[“insert2”] sql2=“插入注释值(“”,“+insert1+”,“+insert2+”)” con.execute(sql2) sql3=“从注释中选择*” con.execute(sql3) row=con.fetchall() 返回渲染模板(“profile.html”,搜索=搜索,行=行) 和我的html页面表单 努姆 描述
我试图学习烧瓶,但在这个问题上我找不到答案。Python 如何在一个flask函数中从单个页面获取多个html表单 @app.route('/profile',methods=['POST','GET'] def配置文件(id): id13=会话['id'] id_profile=id 搜索=无 行=无 如果id13!=id_配置文件: 返回重定向(url_用于('logout')) 如果id13==“”: 返回重定向(url_用于('logout')) 如果request.method==“POST”: search2=request.form['search'] sql=“从muzeu中选择*,其中名称类似“%”+search2+“%”” con.execute(sql) search=con.fetchall() 如果request.method==“POST”: insert1=request.form[“insert1”] insert2=request.form[“insert2”] sql2=“插入注释值(“”,“+insert1+”,“+insert2+”)” con.execute(sql2) sql3=“从注释中选择*” con.execute(sql3) row=con.fetchall() 返回渲染模板(“profile.html”,搜索=搜索,行=行) 和我的html页面表单 努姆 描述,python,flask,Python,Flask,我试图学习烧瓶,但在这个问题上我找不到答案。 我尝试创建一个包含搜索、插入和显示插入内容的个人资料页面。 提交后,我收到http错误400错误请求 “浏览器(或代理)发送了此服务器无法理解的请求。” 有任何帮助吗?浏览器只能提交一个表单。您正试图处理这两个表单中的数据,但未提交的数据将不存在于request.form中,并将引发400错误 您需要能够区分提交的表单。向submit按钮添加名称和值,并检查返回的值,以了解要执行的处理。通过添加带有名称的按钮,您的做法是正确的,但您对它们的看法不一致
我尝试创建一个包含搜索、插入和显示插入内容的个人资料页面。
提交后,我收到http错误400错误请求
“浏览器(或代理)发送了此服务器无法理解的请求。”
有任何帮助吗?
浏览器只能提交一个表单。您正试图处理这两个表单中的数据,但未提交的数据将不存在于
request.form
中,并将引发400错误
您需要能够区分提交的表单。向submit按钮添加名称和值,并检查返回的值,以了解要执行的处理。通过添加带有名称的按钮,您的做法是正确的,但您对它们的看法不一致,并且没有在Flask中检查它们的值
在这种情况下,使用不同的视图来处理搜索和评论会更有意义。创建两个单独的视图,并将表单指向正确的URL
@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>
if request.method == 'POST':
if request.form['action'] == 'search':
# do search action
elif request.form['action'] == 'comment':
# do comment action