我正在学习 Flask 并且有一个关于动态路由的问题:是否可以传入一个可接受的路由列表?我注意到 any
转换器有潜力,但很难找到它的使用示例。基本上我有不同的端点组,它们应该在它们之间触发相同的 Action 。这就是我的意思:
cities = [New York, London, Tokyo]
food = [eggs, bacon, cheese]
actions = [run, walk, jump]
我可以做类似的事情
@app.route('/<string:var>', methods = ['GET'])
def doSomething(var):
if var in cities:
travel(var)
else if var in food:
eat(var)
else if var in action:
perform(var)
但是我有什么办法可以做这样的事情吗?
@app.route('/<any(cities):var>', methods = ['GET'])
def travel(var):
@app.route('/<any(food):var>', methods = ['GET'])
def eat(var)
@app.route('/<any(actions):var>', methods = ['GET'])
def perform(var)
另外,我希望这些列表是动态的。所以我真正想要的是:
cities = myDb.("SELECT cities FROM country")
@app.route('/<any(cities):var>', methods = ['GET'])
def travel(var):
有什么方法可以实现这一目标,还是我将所有内容都阻塞在一个动态路径中?
最佳答案
Flask 基于 Werkzeug它有 AnyConverter这样做。
基本上它允许你声明一个 Werkzeug规则如下:
Rule('/<any(about, help, imprint, class, "foo,bar"):page_name>')
所以基本上对于 flask 来说,它转化为:
from flask import Flask
app = Flask(__name__)
@app.route("/<any('option1', 'option2'):segment>")
def hello(segment):
return "Hello {}!".format(segment)
app.run()
或者如果您希望在应用启动时动态生成这些列表:
from flask import Flask
app = Flask(__name__)
options = ['option1', 'option2']
@app.route("/<any({}):segment>".format(str(options)[1:-1]))
def hello(segment):
return "Hello {}!".format(segment)
app.run()
关于python - 传入 Flask 的可能路径列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43012860/