Маркер URL-адреса флага: Маршрут Несколько URL-адресов для одной и той же функции - программирование
Подтвердить что ты не робот

Маркер 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):

Будет ли лучшее решение?

4b9b3361

Ответ 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/