Je travaille avec Flask 0.9.
Maintenant, je veux router trois URL vers la même fonction:
/item/<int:appitemid>
/item/<int:appitemid>/
/item/<int:appitemid>/<anything can be here>
Le <anything can be here>
part ne sera jamais utilisé dans la fonction.
Je dois copier deux fois la même fonction pour atteindre cet objectif:
@app.route('/item/<int:appitemid>/')
def show_item(appitemid):
@app.route('/item/<int:appitemid>/<path:anythingcanbehere>')
def show_item(appitemid, anythingcanbehere):
Y aura-t-il une meilleure solution?
Pourquoi ne pas simplement utiliser un paramètre pouvant être vide, avec une valeur par défaut de None
?
@app.route('/item/<int:appitemid>/')
@app.route('/item/<int:appitemid>/<path:anythingcanbehere>')
def show_item(appitemid, anythingcanbehere=None):
Oui - vous utilisez la construction suivante:
@app.route('/item/<int:appitemid>/<path:path>')
@app.route('/item/<int:appitemid>', defaults={'path': ''})
Voir l'extrait sur http://flask.pocoo.org/snippets/57/