¿Es posible declarar directamente un parámetro opcional de URL de matraz?
Actualmente estoy procediendo de la siguiente manera:
@user.route('/<userId>')
@user.route('/<userId>/<username>')
def show(userId, username=None):
pass
¿Cómo puedo decir directamente que username
es opcional?
Casi lo mismo que Audrius cocinó hace unos meses, pero puede que le resulte un poco más legible con los valores predeterminados en el cabezal de la función, la forma en que está acostumbrado con python:
fuente
username
no es constante.defaults=
congela el valor predeterminado en un diccionario.Si está utilizando Flask-Restful como yo, también es posible de esta manera:
un entonces en su clase de recursos:
fuente
https://flask.palletsprojects.com/en/1.1.x/quickstart/#unique-urls-redirection-behavior
fuente
http://flask.pocoo.org/snippets/57/
fuente
fuente
Casi lo mismo que skornos, pero con declaraciones variables para una respuesta más explícita. Puede funcionar con la extensión Flask-RESTful :
El
add_resource
método permite pasar múltiples URL. Cada uno se enrutará a su Recurso .fuente
Sé que esta publicación es muy antigua, pero trabajé en un paquete que hace esto llamado flask_optional_routes. El código se encuentra en: https://github.com/sudouser2010/flask_optional_routes .
fuente
Puede escribir como muestra en el ejemplo, pero luego obtiene un error de compilación.
Para arreglar esto:
<Rule '/<userId>/<username>' (HEAD, POST, OPTIONS, GET) -> user.show_0>
y
<Rule '/<userId>' (HEAD, POST, OPTIONS, GET) -> .show_1>
{{ url_for('.show_0', args) }}
y{{ url_for('.show_1', args) }}
fuente
Desde Flask 0.10 no puede agregar múltiples rutas a un punto final. Pero puedes agregar puntos finales falsos
fuente
Creo que puede usar Blueprint y eso hará que su código se vea mejor y ordenado.
ejemplo:
fuente