我尝试在python中验证输入表单中返回的数字。输入值必须是数字且大于0。
我的脚本是这样的:
hello.py
# -*- coding: utf-8 -*-
from flask import *
app = Flask(__name__)
@app.route('/', methods=['GET','POST'])
def checNumber():
if request.method=='POST':
number = request.form['Number']
try:
if int(number) < 0:
raise 'Number should be greater than 0'
except:
raise 'Please enter number only'
return render_template('hello.html')
if __name__ == '__main__':
app.run(debug=True)
hello.html的
<form class="form-horizontal" action='' method='POST'>
<div class="form-group">
<label for="KhmerName" class="col-sm-2 control-label">Number:</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="Number" name="Number" placeholder="Please enter number only">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">Submit</button>
</div>
</div>
</form>
点击提交表单后,如果输入的值不是数字(字母或其他内容),则会引发'Please enter number only'
。但是,如果number为负数,则永远不会引发'Number should be greater than 0'
,但python认为它不是数字而是引发'Please enter number only'
。
我认为负值也是一个数字。
我该如何解决这个问题?感谢。
答案 0 :(得分:1)
o.ifPresentOrElse(
t -> if (!p.test(t)) throw new ForbiddenException(),
() -> throw new NotFoundException());
您希望此行会引发异常和raise 'Number should be greater than 0'
函数转储,但checNumber
块捕获异常。
试试这个:
try ... except ...
答案 1 :(得分:0)
而不是:
try:
if int(number) < 0:
raise 'Number should be greater than 0'
except:
raise 'Please enter number only'
一起去:
try:
if float(request.form['Number']) <= 0:
raise 'Number should be greater than 0'
finally:
raise 'Please enter number only'
如果这没有帮助,请让“int(number)&lt; 0”中的异常通过并查看导致异常的原因。