Est-il possible de déclarer directement un paramètre facultatif d'URL de flacon?
Actuellement, je procède de la manière suivante:
@user.route('/<userId>')
@user.route('/<userId>/<username>')
def show(userId, username=None):
pass
Comment puis-je dire directement que username
c'est facultatif?
Presque la même chose qu'Audrius a préparé il y a quelques mois, mais vous pourriez le trouver un peu plus lisible avec les valeurs par défaut dans la tête de fonction - la façon dont vous êtes habitué avec python:
la source
username
n'est pas constant.defaults=
fige la valeur par défaut dans un dictionnaire.Si vous utilisez Flask-Restful comme moi, il est également possible de cette façon:
puis dans votre classe Ressource:
la source
https://flask.palletsprojects.com/en/1.1.x/quickstart/#unique-urls-redirection-behavior
la source
http://flask.pocoo.org/snippets/57/
la source
la source
Presque le même que skornos, mais avec des déclarations de variables pour une réponse plus explicite. Il peut fonctionner avec l' extension Flask-RESTful :
La
add_resource
méthode permet de transmettre plusieurs URL. Chacun sera acheminé vers votre ressource .la source
Je sais que ce post est vraiment ancien mais j'ai travaillé sur un package qui fait cela appelé flask_optional_routes. Le code est situé sur: https://github.com/sudouser2010/flask_optional_routes .
la source
Vous pouvez écrire comme vous le montrez dans l'exemple, mais vous obtenez une erreur de build.
Pour résoudre ce problème:
<Rule '/<userId>/<username>' (HEAD, POST, OPTIONS, GET) -> user.show_0>
et
<Rule '/<userId>' (HEAD, POST, OPTIONS, GET) -> .show_1>
{{ url_for('.show_0', args) }}
et{{ url_for('.show_1', args) }}
la source
Depuis Flask 0.10, vous ne pouvez pas ajouter plusieurs routes à un point de terminaison. Mais vous pouvez ajouter un faux point de terminaison
la source
Je pense que vous pouvez utiliser Blueprint et cela rendra votre code plus beau et plus net.
exemple:
la source