使用postgres的烧瓶搜索栏

时间:2019-05-31 00:17:30

标签: python postgresql flask

我正在做一个烧瓶项目,我想启用一个搜索栏。通常,我会创建一条路线,但搜索栏会将网址带到?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'

1 个答案:

答案 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"