python-Flask路由在URL中提供带有浮点数的404
作者:互联网
我的Flask应用程序的server.py中具有以下路由定义:
@app.route('/nearby/<float:lat>/<float:long>')
def nearby(lat, long):
for truck in db.trucks.find({'loc': {'$near': [lat, long]}}).limit(5):
if truck.has_key('loc'):
del truck['loc']
return json.dumps(trucks)
但是当我转到http:// localhost:5000 / nearby / 37.7909470419234 / -122.398633589404时,我得到了404.
其他路线工作正常,因此这是一个问题.我在这里做错了什么?
解决方法:
内置的FloatConverter
不处理负数.编写自定义转换器以处理底片.该转换器还将整数视为浮点数,否则也会失败.
from werkzeug.routing import FloatConverter as BaseFloatConverter
class FloatConverter(BaseFloatConverter):
regex = r'-?\d+(\.\d+)?'
# before routes are registered
app.url_map.converters['float'] = FloatConverter
内置函数不处理整数,因为/ 1和/1.0会指向同一资源.为什么它不处理负值还不清楚.
标签:python,routes,flask,http-status-code-404,werkzeug 来源: https://codeday.me/bug/20191010/1887022.html