当前位置: 首页 > 知识库问答 >
问题:

python flask搜索应用程序的路由错误

郝冥夜
2023-03-14

我正试图得到一个简单的搜索功能与我的烧瓶应用程序。我有以下启动搜索的代码

<form action="/search" method=post>
 <input type=text name=search value="{{ request.form.search }}"></br>
 <div class="actions"><input type=submit value="Search"></div>
</form>

这与我的搜索/controllers.py脚本连接起来,看起来像这样

@search.route('/search/')
@search.route('/search/<query>', methods=['GET', 'POST'])
def index(query=None):
    es = current_app.config.get("es")

    q = {"query":{ "multi_match":{"fields":["name","tags","short_desc","description"],"query":query,"fuzziness":"AUTO"}}}
    matches = es.search('products', 'offerings', body=q)
    return render_template('search/results.html', services=matches['_source'])

不幸的是,每当我实际搜索时,都会出现路由错误:

FormDataRoutingRedirect:已向此URL发送请求(http://localhost:8080/search)但路由系统自动发出重定向到“http://localhost:8080/search/“。URL是用尾随斜杠定义的,因此如果在没有尾随斜杠的情况下访问,Flask将自动重定向到带有尾随斜杠的URL。请确保直接将POST请求发送到此URL,因为我们无法使浏览器或HTTP客户端可靠地使用表单数据重定向,或者在没有用户交互的情况下重定向。注意:此异常仅在调试模式下引发

我尝试将方法更改为methods=['POST'],但没有任何区别。

共有2个答案

佟高澹
2023-03-14

如错误所述,您的表单正在发布到/search,但您的处理程序设置为/search/。让他们一样。

阎昌勋
2023-03-14

使用('index')的url\u为操作生成正确的url。

<form action="{{ url_for('index') }}">

当前,您提交到的url没有尾随的/。Flask使用尾部的/将其重定向到路由,但POST数据在许多浏览器上无法通过重定向,因此Flask警告您此问题。

 类似资料:
  • 问题内容: 因此,我正在编写一个框架,我希望以此为基础来开发一些我正在使用的应用程序(该框架在那里,所以我有一个可以使用的环境,并且该系统可以让我使用例如一个登录) 我要创建这个框架,并且它的应用程序都使用面向资源的体系结构。 现在,我想创建一个URL路由类,该类可以由APP编写器(也可能由CMS App用户)扩展,但我想通过查看以下方法找出最佳方法:其他应用程序如何做到这一点。 问题答案: 我更

  • 我将Apache Camel和Spring(而不是Spring Boot)与XML一起使用。 我有camel-context.xml配置文件,其中包含一个从MQTT服务器到JMS服务器和viceversa的路由示例,只是为了分派消息。 下面是我的camel-context.xml: 当在我的主类中运行相同的路由和配置时,问题就会出现,由于RuntimeCamelException出现,几秒钟后问题

  • 我一直在玩Spring Cloud Stream应用程序启动器中的路由器接收器,我对内容类型有一个问题。 我正在向路由器发送一个JSON字符串,我想编写一个SpEL表达式来确定路由。但是,即使我通过修改项目中的JUnit测试用例来运行它,“有效负载”也会显示为字符串,而不是解析的JSON。当为过滤器处理器运行JUnit测试用例时,也是在Spring Cloud Stream App Starter

  • 问题内容: 我在徘徊自己是哪个组件最适合显示swing中的快速搜索结果。我想创建类似这样的内容,在用户可以输入文本的地方创建一个文本字段,在输入过程中,我将改善对数据库的后端快速搜索,并且希望在文本框下方显示数据,他将能够浏览结果,然后按输入将在表中显示结果。所以我的问题是,是否有任何组件已经具有此显示逻辑?还是不是,实现它的最佳方法是什么。 如果可以在桌面应用程序上进行,此搜索将是ajax在网络

  • 我写了一个二分搜索的递归程序,正如你所看到的,我试图在给定的数组中找到目标=21的位置,然后返回位置为2。但是,我的输出是1。当我调试它匹配att arr[start]=target时,它直接跳到findTheNumber(arr,mid+1,end,target)行;然后下一行,然后返回mid..只是想知道为什么我的返回在“返回开始”时中断了 }

  • 大家好,请帮助我解决这个错误,当我运行我的Spring Boot应用程序,这个错误弹出。我试过建议的方法,但还是不行。 依赖关系 更正应用程序的类路径,使其包含一个兼容的javax.persistence.table版本