我有一个烧瓶路线,定义如下:
@app.route('/test/', methods=['POST'])
def test():
number = request.form.get('my_number', 555) # number == ''
return str(number)
如果在/test/
为空/缺失的情况下向my_number
发出POST请求,则我希望将局部变量number
设置为555
(默认值)。相反,number
是空字符串''
。
我能够获得默认值(number == 555
)的唯一方法是像这样使用or
:
@app.route('/test/', methods=['POST'])
def test():
number = request.form.get('number') or 555 # number == 555
return str(number)
知道发生了什么事吗?
问题是,对于您的输入,request.form.get('number')
始终在检索空字符串。因为有要检索的内容,所以即使您将默认值作为第二个参数传递,它也不会使用默认值。
or
,但是,将''
视为假,因此将选择555
。 (请参阅“使用或与公共对象一起使用” https://realpython.com/python-or-operator/)
这意味着,每当您访问此URL时,您发布的表单都会有一个“数字”条目。