Ist es möglich, einen optionalen Parameter für die Kolben-URL direkt zu deklarieren?
Derzeit gehe ich folgendermaßen vor:
@user.route('/<userId>')
@user.route('/<userId>/<username>')
def show(userId, username=None):
pass
Wie kann ich direkt sagen, dass dies username
optional ist?
Fast das gleiche wie Audrius vor einigen Monaten, aber vielleicht finden Sie es mit den Standardeinstellungen im Funktionskopf etwas besser lesbar - so wie Sie es von Python gewohnt sind:
quelle
username
nicht konstant ist.defaults=
friert den Standardwert in einem Wörterbuch ein.Wenn Sie Flask-Restful wie ich verwenden, ist dies auch folgendermaßen möglich:
a dann in Ihrer Ressourcenklasse:
quelle
https://flask.palletsprojects.com/de/1.1.x/quickstart/#unique-urls-redirection-behavior
quelle
http://flask.pocoo.org/snippets/57/
quelle
quelle
Fast das gleiche wie Skornos, jedoch mit variablen Deklarationen für eine explizitere Antwort. Es kann mit der Flask-RESTful-Erweiterung funktionieren :
Die
add_resource
Methode ermöglicht die Übergabe mehrerer URLs. Jeder wird an Ihre Ressource weitergeleitet .quelle
Ich weiß, dass dieser Beitrag wirklich alt ist, aber ich habe an einem Paket namens flask_optional_routes gearbeitet, das dies tut. Der Code befindet sich unter: https://github.com/sudouser2010/flask_optional_routes .
quelle
Sie können schreiben, wie Sie im Beispiel zeigen, aber dann erhalten Sie einen Build-Fehler.
Um dies zu beheben:
<Rule '/<userId>/<username>' (HEAD, POST, OPTIONS, GET) -> user.show_0>
und
<Rule '/<userId>' (HEAD, POST, OPTIONS, GET) -> .show_1>
{{ url_for('.show_0', args) }}
und{{ url_for('.show_1', args) }}
quelle
Seit Flask 0.10 können Sie einem Endpunkt nicht mehrere Routen hinzufügen. Sie können jedoch einen gefälschten Endpunkt hinzufügen
quelle
Ich denke, Sie können Blueprint verwenden, und dadurch sieht Ihr Code besser und ordentlicher aus.
Beispiel:
quelle