我正在使用Flask 0.9。
现在我想将三个网址路由到同一个功能:
/item/<int:appitemid>
/item/<int:appitemid>/
/item/<int:appitemid>/<anything can be here>
<anything can be here>
部分永远不会在函数中使用。
我必须复制相同的功能两次才能达到这个目标:
@app.route('/item/<int:appitemid>/')
def show_item(appitemid):
@app.route('/item/<int:appitemid>/<path:anythingcanbehere>')
def show_item(appitemid, anythingcanbehere):
会有更好的解决方案吗?
答案 0 :(得分:64)
为什么不使用可能为空的参数,默认值为None
?
@app.route('/item/<int:appitemid>/')
@app.route('/item/<int:appitemid>/<path:anythingcanbehere>')
def show_item(appitemid, anythingcanbehere=None):
答案 1 :(得分:6)
是 - 您使用以下构造:
@app.route('/item/<int:appitemid>/<path:path>')
@app.route('/item/<int:appitemid>', defaults={'path': ''})
上的摘录