【发布时间】:2020-04-12 12:57:03
【问题描述】:
我的 Flask 应用程序中有一个函数,它返回用户搜索数据库的结果。用户从/search 视图进行搜索。当用户搜索时,我希望 URL 为 example.com/search_results?q={{ q }}&page=1,其中 q 是搜索词。相反,URL 仍然是/search。当他们浏览搜索结果时,这是固定的,因为分页会将他们定向到href="/search_results?q={{ q }}&page={{ page + 1}}"我已经尝试了几种不同的方法,但我无法弄清楚。我的路线是:
@app.route('/search', methods=['GET', 'POST'])
def search():
form = SearchForm()
search_results=[]
if form.validate_on_submit():
search_results = list(db.openings.find({"$text": {"$search": form.search.data}}))
num_results = len(search_results)
return render_template('search_results.html', form=form, results=search_results[:10], start=0, end=10, page=1, total=2, q=form.search.data, num_results=num_results)
return render_template('search.html', form=form)
@app.route('/search_results', methods=['GET', 'POST'])
def search_results():
form = SearchForm()
search_results=[]
if form.validate_on_submit():
search_results = list(db.openings.find({"$text": {"$search": form.search.data}}))
num_results = len(search_results)
return render_template('search_results.html', title='Home', form=form, results=search_results[:10], start=0, end=10, page=1, total=2, q=form.search.data, num_results=num_results)
per_page = 10
offset = 0
page = request.args.get('page', 1, type=int)
query = request.args.get('q')
search_results = list(db.openings.find({"$text": {"$search": query}}))
total = len(search_results)
t_pages = total // per_page
start = offset + ((page-1) * per_page)
end = start + per_page
results = search_results[start:end]
num_results = len(search_results)
return render_template('search_results.html', title='Home', form=form, results=results, page=page, total=t_pages, q=query, start=start, end=end, num_results=num_results)
我尝试创建一个新路由,例如@app.route('search_results?q={{ q }}&page=1'),并将搜索结果重定向到那里,但没有成功。任何建议,将不胜感激。
【问题讨论】:
-
您可能需要将实际的搜索逻辑移动到重定向端点——搜索端点唯一应该做的就是解析表单数据并发出重定向
标签: flask