如何在一个烧瓶功能中从单个页面获取许多html表单

时间:2017-04-24 13:23:37

标签: python flask

@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;
有什么帮助吗?

1 个答案:

答案 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') }}">