Flask Python路由冲突

Flask Python路由冲突,flask,Flask,我将PythonFlask用于web应用程序,在我的python文件中有以下路径 @app.route("/admin", methods=['GET', 'POST']) def admin(): print "In admin method. With request method: ", request.method pass @app.route("/<query>", methods=['GET']) def search(query): prin

我将PythonFlask用于web应用程序,在我的python文件中有以下路径

@app.route("/admin", methods=['GET', 'POST'])
def admin():
    print "In admin method. With request method: ", request.method
    pass

@app.route("/<query>", methods=['GET'])
def search(query):
    print "In search method. With request method: ", request.method
    pass
粗体的线条让我不舒服,让我觉得可疑。当我向我的管理员提交post请求时,为什么flask应用程序会执行另一个GET请求

@app.route("/<query>", methods=['GET'])
此路由非常广泛,它可以捕获所有/admin请求。尝试创建例如路由/admin/和/r/

而不是使用:

<form class="form-horizontal" action="/admin" method="post">
你可以试试这个:

<form class="form-horizontal" action="{{ url_for('admin') }}" method="post">

控制台输出的第一个GET来自哪里?在GET请求可以映射到“/admin”和catch all“/”的路由中存在歧义。我怀疑帖子不是问题所在,但任何GET都可能触发两条路线,这确实很奇怪。我还将在搜索函数中打印查询,以查看将发送什么来调试此功能。还显示要调试的所有参数、数据、表单等。request.args、request.form、request.data。当您从admin方法返回响应时,是否有搜索方法GET?@GG_Python我重命名了/admin/update的路径以解决此问题。@Celeo:没有来自admin方法的搜索方法调用
<form class="form-horizontal" action="/admin" method="post">
<form class="form-horizontal" action="{{ url_for('admin') }}" method="post">