首页 > 解决方案 > 如何使用 Flask 从文本框中获取输入

问题描述

这是我想要达到的 app.route:

@app.route('/advance_search',methods=['GET','POST'])

def 高级搜索():

    word=""
    word = request.form['kword']
    result=[]
    result=getListOfKeyWord(word)
    return render_template('advance_search.html',key=result)

这是我试图从主页 ( advance_search) 访问的 HTML:

<form action="/advance_search" method="POST" class="col s12">
  <div class="row center">
    
      <a href="{{ url_for('advance_search') }}" class="btn-large waves-effect waves-light orange">Advanced</a>
    
</div>
</form>

这是advance_search.html我试图达到的 HTML:

<form action='/advance_search' method="POST" enctype="multipart/form-data" >
  <div class="row">
    
        <label for="first_name"><b>Keyword</b></label>
        <br>
        
      <input   id="kword" name='kword'type="text" class="btn" placeholder="type & hit Enter">
    
    
  </div>

  <div class="row center">

      <button type="submit" class="btn-large waves-effect waves-light orange">Search</button>
  </div>
  <div class="row center">
    {{key}}
  </div>
 

  
</form>

当我尝试单击(高级)按钮以转到 `advance_search.htmln 页面时,我收到此错误:

**werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
KeyError: 'kword'**

标签: pythonhtmlflask

解决方案


您需要确保是否发出了 post 或 get 请求,然后您可以访问 request.from 键。

你的功能是:

[...]
result=[]

if request.method == "POST":
     word=""
     word = request.form['kword']
     result=getListOfKeyWord(word)
     
     return render_template('advance_search.html',key=result)
return render_template('advance_search.html',key=result)

request.form["kword"]在发出发布请求之前,您无法访问。


推荐阅读