É possível declarar diretamente um parâmetro opcional do URL do balão?
Atualmente, estou procedendo da seguinte maneira:
@user.route('/<userId>')
@user.route('/<userId>/<username>')
def show(userId, username=None):
pass
Como posso dizer diretamente que username
é opcional?
Quase o mesmo que o Audrius inventou alguns meses atrás, mas você pode achar um pouco mais legível com os padrões no cabeçote da função - da maneira como você está acostumado com o python:
fonte
username
não for constante.defaults=
congela o valor padrão em um dicionário.Se você estiver usando o Flask-Restful como eu, também é possível desta maneira:
a então na sua classe Resource:
fonte
https://flask.palletsprojects.com/en/1.1.x/quickstart/#unique-urls-redirection-behavior
fonte
http://flask.pocoo.org/snippets/57/
fonte
fonte
Quase o mesmo que skornos, mas com declarações variáveis para uma resposta mais explícita. Pode funcionar com a extensão Flask-RESTful :
O
add_resource
método permite passar URLs múltiplos. Cada um será roteado para o seu Recurso .fonte
Eu sei que este post é muito antigo, mas trabalhei em um pacote que faz isso chamado flask_optional_routes. O código está localizado em: https://github.com/sudouser2010/flask_optional_routes .
fonte
Você pode escrever como mostra no exemplo, mas obtém um erro de construção.
Para corrigir isso:
<Rule '/<userId>/<username>' (HEAD, POST, OPTIONS, GET) -> user.show_0>
e
<Rule '/<userId>' (HEAD, POST, OPTIONS, GET) -> .show_1>
{{ url_for('.show_0', args) }}
e{{ url_for('.show_1', args) }}
fonte
Desde o Flask 0.10, você não pode adicionar várias rotas a um ponto final. Mas você pode adicionar um ponto de extremidade falso
fonte
Eu acho que você pode usar o Blueprint e isso fará com que seu código tenha uma aparência melhor e ordenada.
exemplo:
fonte