我的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 - Flask路由在URL中提供404和浮点数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43594861/

10-10 23:50