我正在做一个烧瓶项目,我想启用一个搜索栏。通常,我会创建一条路线,但搜索栏会将网址带到?query =并绕过我创建的路线。我尝试制作与搜索栏创建的路线相似的路线,但没有成功。我正在尝试使用psycopg2与postgresql一起实现。
@newsbeta.route("/newsbeta/<query>")
def get_query(query):
cur.execute(f"SELECT * FROM test WHERE to_tsvector('english',title) @@ to_tsquery('english','{query}');")
searchquery = []
for i in range(10):
searchquery.append(cur.fetchone())
return render_template('search.html', title='News', searchquery=searchquery)
预期的代码是,当我在搜索栏中编写查询时,它将从postgres数据库中获取该查询,并返回包含信息的渲染模板。当我在搜索栏中查询某些内容然后手动访问/ newsbeta / query时,此方法有效。
用户@roy所说的话可能是其他问题的答案,但是如果有人可以启发我,我不知道如何改变这种说法。 ``您必须更改模式,以便将其重定向到其他视图,即def show_results():.这也是您无法共享网址的原因,例如@roy的example.com/search?query='some text'
答案 0 :(得分:0)
@newsbeta.route("/search")
def get_query():
query = request.args.get("search")
cur.execute(f"SELECT * FROM test WHERE to_tsvector('english',title) @@ to_tsquery('english','{query}');")
searchquery = []
for i in range(10):
searchquery.append(cur.fetchone())
return render_template('search.html', title='News', searchquery=searchquery)
#set html
form action="/search" methods=['GET'] name= "search" id="query"