引导导航栏搜索将搜索查询发送到Flask视图

引导导航栏搜索将搜索查询发送到Flask视图,flask,jinja2,flask-sqlalchemy,flask-wtforms,Flask,Jinja2,Flask Sqlalchemy,Flask Wtforms,我有一个base.html,其中导航栏有一个搜索框 <form class="form-inline my-2 my-lg-0" action={{ url_for('search') }} method="POST"> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}&qu

我有一个base.html,其中导航栏有一个搜索框

        <form class="form-inline my-2 my-lg-0" action={{ url_for('search') }} method="POST">
          <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
          <input class="form-control mr-sm-2" name="search" type="search" placeholder="Search Storage Request" aria-label="Search">
          <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
        </form>
但当我从导航栏搜索框中搜索任何内容时。以下是我得到的错误:

query = request.args['search']
AttributeError: 'function' object has no attribute 'args'

不知何故,我无法在视图中抓取搜索查询。

通常,搜索请求使用
GET
方法执行,您甚至不需要提及
method=“GET”
,因为这是默认方法。另外,您不需要表单中的
csrf\u令牌
,因为它是一个
GET
请求`

因此,我建议您在

你的模板
谢谢西扎里奥,你写得很好。我把它改成了一个新的名字。还有,我又犯了一个愚蠢的错误。我错误地用python关键字“request”定义了一个函数。现在,该应用程序运行良好。
query = request.args['search']
AttributeError: 'function' object has no attribute 'args'
<form class="form-inline my-2 my-lg-0" action="{{ url_for('search') }}">
  <input class="form-control mr-sm-2" name="search" type="search" placeholder="Search Storage Request" aria-label="Search">
  <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
@app.route('/search')  # 'GET' is the default method, you don't need to mention it explicitly
def search():

    # query = request.args['search']
    query = request.GET.get('search')  # try this instead

    req_search = Storage.query.filter_by(req_no=query)
    return render_template('search.html', req_search=req_search)