【问题标题】:Flask - Optional path argsFlask - 可选路径参数
【发布时间】:2019-04-25 23:24:07
【问题描述】:

如何使路径 /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)

【问题讨论】:

标签: python flask


【解决方案1】:

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 中提供的参数。如果未提供或提供较少参数,则将使用参数的默认值。

截图:

三个参数:

两个参数:

一个参数:

【讨论】:

  • 完美!谢谢。
【解决方案2】:

试试这个

@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)

【讨论】:

    猜你喜欢
    • 2018-05-13
    • 2011-10-12
    • 1970-01-01
    • 2018-03-20
    • 2016-06-06
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多