如果输入与数据结构匹配,则重定向 Flask 路由
这应该是比较基础的内容。我正在开发一个Flask应用,做一些搜索的功能。
@app.route('/search_results/<search_string>', methods= ['GET', 'POST'])
def generateSearchResults(search_string = None):
#an exact match
if search_string in data_struct:
return displayInfomation(search_string)
else:
#code that will figure out possible matches, and then render
#a template based on that
@app.route('/display_results/<search_string>', methods= ['GET', 'POST'])
def displayInfomation(search_string = None):
#figures some stuff out based on the search string, then renders a template
对于那些不太会看代码的朋友,我想尝试另一种方法,如果在我使用的数据结构中能找到通过网址传入的内容。不过,当我这样做的时候,我在网址栏看到的内容是
http://my_site_name/search_results/search_string
所以很明显,它并没有调用我的displayInfomation函数。我尝试了我觉得直观的方法,有没有人知道该怎么做呢?
1 个回答
1
你这里其实是在重复使用另一个视图来进行渲染。如果你的 if search_string in data_struct
这个判断是 True
,那么另一个视图就会像个函数一样被调用。这个过程和浏览器上显示的URL关系不大,因为浏览器并不知道或者不关心服务器在访问 /search_results/search_string
这个URL时做了什么。
如果你想让URL发生变化,你可以使用 redirect()
来告诉 浏览器 去加载另一个视图:
from flask import redirect, url_for
@app.route('/search_results/<search_string>', methods= ['GET', 'POST'])
def generateSearchResults(search_string = None):
if search_string in data_struct:
return redirect(url_for('displayInfomation', search_string=search_string))
@app.route('/display_results/<search_string>', methods= ['GET', 'POST'])
def displayInfomation(search_string = None):
调用 url_for()
会为 displayInformation
视图构建一个有效的URL,并自动填入 search_string
,而 redirect()
则会创建一个带有302重定向状态的响应。