Маркер URL-адреса флага: Маршрут Несколько URL-адресов для одной и той же функции
Я работаю с Flask 0.9.
Теперь я хочу направить три URL-адреса на одну и ту же функцию:
/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):
Будет ли лучшее решение?
Ответы
Ответ 1
Почему бы просто не использовать параметр, который может быть пустым, со значением по умолчанию None
?
@app.route('/item/<int:appitemid>/')
@app.route('/item/<int:appitemid>/<path:anythingcanbehere>')
def show_item(appitemid, anythingcanbehere=None):
Ответ 2
Да - вы используете следующую конструкцию:
@app.route('/item/<int:appitemid>/<path:path>')
@app.route('/item/<int:appitemid>', defaults={'path': ''})
См. фрагмент в http://flask.pocoo.org/snippets/57/