我有一个 Flask 路线,定义如下:
@app.route('/test/', methods=['POST'])
def test():
number = request.form.get('my_number', 555) # number == ''
return str(number)
Run Code Online (Sandbox Code Playgroud)
/test/如果我向空/缺失发出 POST 请求my_number,我希望将局部变量number设置为555(默认值)。相反,number是一个空字符串''。
我能够获得受尊重的默认值()的唯一方法是像这样number == 555使用:or
@app.route('/test/', methods=['POST'])
def test():
number = request.form.get('my_number') or 555 # number == 555
return str(number)
Run Code Online (Sandbox Code Playgroud)
知道出了什么问题吗?
小智 5
问题是,对于您的输入,request.form.get('number')始终检索空字符串。因为要检索一些内容,所以即使您将其作为第二个参数传递,它也不会使用默认值。
or然而,视为''假,所以它会挑选555。(请参阅“使用或使用常见对象” https://realpython.com/python-or-operator/)
这意味着每当您访问此网址时,您发布的表单都会有一个“数字”条目。