我在Flask支持的网站上有一个搜索栏,当用户单击搜索按钮时,该搜索栏可以很好地工作(我使用的是带有POST
请求的JS代码)。但是,当用户单击“输入”来发送表单时,它不起作用。在这种情况下,浏览器会加载类似/?finder=searchedword
的链接。
finder
是用于表单的html代码的name
属性的值。为了解决该问题,我尝试设置一个重定向,该重定向始终将重定向到应加载的正确链接,但是不幸的是,使用此解决方案无效。它只是简单地重定向到主页"/"
。
这是我管理重定向的方式:
@app.route("/?finder=<tag>")
def search(tag):
t = tag.replace(' ', '-')
return redirect("/result/%s/" % (t,), code=301)
我的问题是处理这种重定向的正确技术是什么?这种重定向始终对我有用,并且我在多个应用程序中都使用它,因此我不知道实现的弱点是什么。
答案 0 :(得分:1)
过去,问号实际上不是路由的一部分,而是页面的参数。因此Flask只是匹配网址“ /”。
尝试这样的事情:
@app.route("/")
def search():
if "finder" in request.args:
t = request.args["finder"].replace(" ", "-")
return redirect("/result/%s/" % (t,), code=301)