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