Czy można bezpośrednio zadeklarować opcjonalny parametr adresu URL kolby?
Obecnie postępuję następująco:
@user.route('/<userId>')
@user.route('/<userId>/<username>')
def show(userId, username=None):
pass
Jak mogę bezpośrednio powiedzieć, że username
jest to opcjonalne?
Prawie taki sam, jak Audrius, ugotowany kilka miesięcy temu, ale może być nieco bardziej czytelny z domyślnymi ustawieniami w funkcji head - tak jak jesteś przyzwyczajony do Pythona:
źródło
username
nie jest stałe.defaults=
zamraża wartość domyślną w słowniku.Jeśli używasz Flask-Restful jak ja, jest to również możliwe w ten sposób:
a następnie w twojej klasie zasobów:
źródło
https://flask.palletsprojects.com/en/1.1.x/quickstart/#unique-urls-redirection-behavior
źródło
http://flask.pocoo.org/snippets/57/
źródło
źródło
Prawie to samo co skornos, ale ze zmiennymi deklaracjami, aby uzyskać bardziej jednoznaczną odpowiedź. Może współpracować z rozszerzeniem Flask-RESTful :
add_resource
Metoda pozwala wielokrotności przepustowe URL. Każdy zostanie przekierowany do Twojego zasobu .źródło
Wiem, że ten post jest naprawdę stary, ale pracowałem nad pakietem o nazwie flask_optional_routes. Kod znajduje się na stronie : https://github.com/sudouser2010/flask_optional_routes .
źródło
Możesz pisać tak, jak pokazano w przykładzie, ale wtedy pojawia się błąd kompilacji.
Aby to naprawić:
<Rule '/<userId>/<username>' (HEAD, POST, OPTIONS, GET) -> user.show_0>
i
<Rule '/<userId>' (HEAD, POST, OPTIONS, GET) -> .show_1>
{{ url_for('.show_0', args) }}
i{{ url_for('.show_1', args) }}
źródło
Od wersji Flask 0.10 nie można dodawać wielu tras do jednego punktu końcowego. Ale możesz dodać fałszywy punkt końcowy
źródło
Myślę, że możesz używać Blueprint, dzięki czemu Twój kod będzie wyglądał lepiej i ładniej.
przykład:
źródło