Flask - 可选路径参数

Zer*_*eel 4 python flask

如何使路径 /name/int/float 为可选。

因此,如果我这样做:http://localhost/Zeref/尽管没有输入 int 或 float,它仍然可以工作。

如果我做了http://localhost/Zeref/1/它将只做 name 和 int 而不是浮点数。

那么我该怎么做才能使它们成为可选的呢?

代码:

import flask

win = flask.Flask(__name__)

@win.route("/<name>/<int:ints>/<float:floats>")

def web(name, ints, floats):
    return "Welcome Back: %s Your Int: %d Your Float: %f" % (name, ints, floats)

win.run("localhost", 80)
Run Code Online (Sandbox Code Playgroud)

ars*_*sho 12

Flask 中允许使用可选参数。

您可以为同一功能定义多个规则。这是有关URL 路由注册的文档。

更新代码:

import flask

win = flask.Flask(__name__)

@win.route('/<name>/', defaults={'ints': None, 'floats': None})
@win.route('/<name>/<int:ints>/', defaults={'floats': None})
@win.route("/<name>/<int:ints>/<float:floats>/")
def web(name, ints, floats):
    if ints!=None and floats!=None:
        return "Welcome Back: %s, Your Int: %d, Your Float: %f" % (name, ints, floats)
    elif ints!=None and floats==None:
        return "Welcome Back: %s, Your Int: %d" % (name, ints)
    return "Welcome Back: %s" % (name)

win.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

当 chrome 或任何其他 Web 浏览器请求这些 URL 中的任何一个时,Flask 将调用关联的函数以及 URL 中提供的参数。如果没有提供或提供更少的参数,则将使用参数的默认值。

截图:

三个参数:

三个参数

两个参数:

两个参数

一参数:

一参数