Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果输入与数据结构中的内容匹配,则重定向烧瓶路由_Python_Url_Redirect_Routing_Flask - Fatal编程技术网

Python 如果输入与数据结构中的内容匹配,则重定向烧瓶路由

Python 如果输入与数据结构中的内容匹配,则重定向烧瓶路由,python,url,redirect,routing,flask,Python,Url,Redirect,Routing,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 displayInfomati

应该是相当基本的。我正在用我正在开发的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

所以它显然没有调用我的displayinformation函数。我尝试了一种对我来说似乎很直观的方法,有人知道如何做到这一点吗?

您只是在重复使用另一个视图来进行渲染。如果数据结构测试中的搜索字符串为
True
,则将另一个视图用作函数,并将调用它。这与浏览器中显示的URL关系不大,因为浏览器不知道或不关心服务器在访问
/search\u results/search\u string
URL时做了什么

如果要更改URL,请使用以下命令指示浏览器加载其他视图:

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):
来自flask导入重定向,url\u用于
@app.route('/search_results/',methods=['GET','POST'])
def generateSearchResults(搜索字符串=无):
如果在数据结构中搜索字符串:
返回重定向(url_for('displayinformation',search_string=search_string))
@app.route('/display_results/',methods=['GET','POST'])
def DISPLAYINFORMATION(搜索字符串=无):

url\u for()
调用将为
displayInformation
视图构建一个有效的url,为您填充
search\u字符串
,并且
redirect()
创建一个302重定向状态的响应。

什么是
data\u struct
并且在所述结构中有一个名为“search\u string”的项?另外,您使用的是什么版本的python?哦,为什么不
返回重定向(url\u for('displayInformation'search\u string=search\u string)
而不是打电话给其他人view@JoeDoherty:为什么这里有什么
data\u struct
或者Python版本很重要?data\u struct是全局的,不用担心it@Zack:好吧,如果数据结构中的
search\u string
始终为False,那将是一个问题。@MartjinPieters我试图涵盖所有基础,我知道问题将与返回我没有检查的另一个视图,我认为这是由于一个错误导致的,所以我想确保“in”肯定会触发,python版本的主要原因是我想知道这是否是一个ascii unicode的东西,结构中的数据是否与函数名一起工作?链接的文档看起来像是带有url,但是e没有要确认的示例。尝试了您编写的内容,但仍然得到相同的错误。@Zack:
url\u for()
采用路由名称,默认为函数名称。您的示例没有设置路由名称。@Zack:同样的错误是什么。您的问题中没有提到错误。如果没有重定向,则
如果数据结构中的搜索字符串不为真。@Zack:要测试,请移动
返回重定向(…)
if
语句中取出,看看会发生什么。好的,找出我的工作方式与你的不一样的原因,这是一个小问题,我正在修改我没有显示的搜索字符串。谢谢你的帮助!:D
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):