python - 没有尾部斜杠的 URL 的 FormData 路由重定向异常

标签 python url flask python-2.6

我正在执行一个 ajax POST 请求,但我收到了这个异常:

[Fri Nov 29 20:48:55 2013] [error] [client 192.168.25.100]     self.raise_routing_exception(req)
[Fri Nov 29 20:48:55 2013] [error] [client 192.168.25.100]   File "/usr/lib/python2.6/site-packages/flask/app.py", line 1439, in raise_routing_exception
[Fri Nov 29 20:48:55 2013] [error] [client 192.168.25.100]     raise FormDataRoutingRedirect(request)
[Fri Nov 29 20:48:55 2013] [error] [client 192.168.25.100] FormDataRoutingRedirect: A request was sent to this URL (http://example.com/myurl) but a redirect was issued automatically by the routing system to "http://example.com/myurl/".  The URL was defined with a trailing slash so Flask will automatically redirect to the URL with the trailing slash if it was accessed without one.  Make sure to directly send your POST-request to this URL since we can't make browsers or HTTP clients redirect with form data reliably or without user interaction.

路由定义是这样的:

@app.route('/myurl')
def my_func():

我可以在 Firebug 中看到发送的请求没有尾部斜线:

http://example.com/myurl
Content-Type    application/x-www-form-urlencoded; charset=UTF-8

我在另一个模块中有这个:

@app.route('/')
@app.route('/<a>/')
@app.route('/<a>/<b>')
def index(a='', b=''):

这最后一个会妨碍吗?或者是什么? Flask 版本为 0.10.1

最佳答案

我猜你的 /myurl路线未定义为接受 POST请求,以及您的 /<a>/路线是,所以 Werkzeug 选择 /<a>/ .

解释了以斜杠结尾的路由的行为 here .默认情况下,调用使用尾部斜杠定义的路由而没有该斜杠会触发重定向到 URL 的尾部斜杠版本。这当然不适用于 POST请求,所以你得到 FormDataRoutingRedirect异常。

我怀疑你是否发送了你的 POST请求 /myurl/那么你的/<a>/路由将被调用得很好,但显然这不是您想要的。

我认为你缺少的是接受 POST关于 /myurl 的请求,您可以执行以下操作:

@app.route('/myurl', methods = ['GET', 'POST'])
def my_func():

关于python - 没有尾部斜杠的 URL 的 FormData 路由重定向异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20293372/

相关文章:

python - 如何使用flask将内容加载到div元素中

python - 使用 Jinja2 模板缩小 Flask 应用程序的 HTML 输出

python - 如何将新的 json 对象插入现有的 json 文件(在对象中间)

python - 如何从数据库中获取所有数据并显示在表格中

java - Struts 2 - 适用于任何 URL 的映射操作

javascript - URL 编码异常

javascript - 我如何使用另一个网址如果我得到网址 (' ' )

python - 如何清理 Python 和 Flask 中用户提供的路径?

python - 使用 PyEphem 计算黎明和日落时间

python - 在Google map 图像(航空图像)中检测街道区域的简单方法