在python中定义url以整数结尾的路由

时间:2013-01-16 03:28:43

标签: python flask routes

以下是我的python代码的一部分:

@app.route("/<int:param>/")
def go_to(param):
    return param

上述函数将www.example.com/12等网址路由到此函数。

如何声明参数规则以将以整数结尾的网址(例如www.example.com/and/boy/12)重定向到此函数?

我正在使用Flask框架。

3 个答案:

答案 0 :(得分:14)

您只需要在参数中添加“和/ boy”:

@app.route("/and/boy/<int:param>/")
def go_to(param):
    return param

答案 1 :(得分:7)

您需要Werkzeug routing

完整代码:

from flask import Flask
from werkzeug.routing import BaseConverter

app = Flask(__name__)

class RegexConverter(BaseConverter):
        def __init__(self, url_map, *items):
                super(RegexConverter, self).__init__(url_map)
                self.regex = items[0]

app.url_map.converters['regex'] = RegexConverter

# To get all URLs ending with "/number"
@app.route("/<regex('.*\/([0-9]+)'):param>/")
def go_to_one(param):
    return param.split("/")[-1]

# To get all URLs ending with a number
@app.route("/<regex('.*([0-9]+)'):param>/")
def go_to_one(param):
    return param.split("/")[-1]

# To get all URLs without a number
@app.route("/<regex('[^0-9]+'):param>/")
def go_to_two(param):
    return param

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

答案 2 :(得分:0)

@app.route('/profile/<username>')
def profile(username):
    return f"you are in {username} page"

如果您需要特定的数据类型(例如像这样的整数),您可以使用任何数据类型传递参数

@app.route('/profile/<int:id')
def profile(username):
    return f"your profile id is {id}"