如果输入与data struct中的某些内容匹配,则重定向flask路由

时间:2014-03-12 16:47:55

标签: python url redirect routing 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

对于那些不擅长阅读代码的人,我试图采取另一种途径,如果在我正在使用的数据结构中找到url中传递的东西。但是,当我尝试这个时,我会在网址栏中看到

http://my_site_name/search_results/search_string

所以很明显ISN&T调用我的displayInfomation函数。我尝试了对我来说似乎很直观的事情,有谁知道如何做到这一点?

1 个答案:

答案 0 :(得分:0)

您只是在这里重复使用其他视图进行渲染。如果您的if search_string in data_struct测试为True,则另一个视图将用作函数,调用。这与浏览器中显示的URL几乎没有关系,因为浏览器在访问/search_results/search_string 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 search_string视图的有效网址,redirect()创建一个302重定向状态的响应。