为什么我的GET请求参数没有显示在我的URL中?

时间:2019-06-13 01:52:22

标签: html twitter-bootstrap http flask

我的模板文件夹中有2个html文件:home.html和search.html。我有一个Flask后端,基本上,每次我运行我的应用程序时,它都会先加载home.html文件。我的主页上有一个搜索栏,其想法是每当有人在搜索栏中键入内容并按Enter时,就会加载我的search.html页面并发出GET请求。

我主页上的搜索栏是表格,下面是代码。

<form class="form-inline" role="search" method="get">
    <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search" name="q">
    <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
  </form>

我希望我的网址更改为典型的GET请求格式:“ http://.../search?q?=whateverTextWasEnteredIntoTheForm

但是,每当我在主页上键入表单并单击搜索按钮时,我的应用程序就会按原样导航到search.html页面,但似乎查询完全丢失了。我剩下的网址只是“ http://.../search?”为什么?

我还包括了到目前为止的两种烧瓶方法。

这是一个问题,因为我最终需要能够访问搜索参数,以便显示搜索结果。

from flask import Flask, render_template, request


app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html')

@app.route('/search', methods=['GET'])
def search():
    if request.method == 'GET':
        #print("hi")
        PARAMS= request.args.getlist('q[]')
        print(PARAMS)


    return render_template('search.html')

1 个答案:

答案 0 :(得分:0)

您的表单需要action属性才能转到正确的路线:

<form action="{{url_for('search')}}" ...>

(将输出action="/search"