提供404的Flask路径,URL中有浮点数

2024-05-19 10:24:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Flask应用程序中有以下路径定义服务器.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。在

其他的线路都很好,所以这条线路有问题。我做错什么了?在


Tags: py路径服务器应用程序flask定义公司float
3条回答

从Werkzeug 0.15开始,built-in float converter有一个signed=True参数,您可以使用它来实现:

@app.route('/nearby/<float(signed=True):lat>/<float(signed=True):long>')

由于内置的FloatConverter只能处理正数,所以我将坐标作为字符串传递,并使用Python的float()方法将它们转换为float。在

内置的^{}不处理负数。编写一个自定义转换器来处理负片。此转换器还将整数视为浮点,这也会失败。在

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和{}将指向同一个资源。为什么它不处理负值还不太清楚。在

相关问题 更多 >

    热门问题