我的模板文件夹中有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')
答案 0 :(得分:0)
您的表单需要action
属性才能转到正确的路线:
<form action="{{url_for('search')}}" ...>
(将输出action="/search"
)