Flask-可选路径参数

时间:2018-11-23 10:43:07

标签: python flask

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

因此,如果我这样做:http://localhost/Zeref/,即使未输入int或float仍然可以使用。

如果我这样做了,http://localhost/Zeref/1/只会做名字而不是浮点数。

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

代码:

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)

2 个答案:

答案 0 :(得分:0)

Flask中允许使用可选参数。

您可以为同一功能定义多个规则。这是URL Route Registrations上的文档。

更新的代码:

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)

当chrome或任何其他网络浏览器请求这些URL之一时,Flask将调用相关的函数以及URL中提供的参数。如果未提供或少于参数,则将使用参数的默认值。

屏幕截图:

三个参数:

Three parameters

两个参数:

Two parameters

一个参数:

One parameter

答案 1 :(得分:0)

尝试这个

@win.route("/<name>/<int:ints>/<float:floats>")
def web(name, ints=None, floats=None):
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)
相关问题