如何在python中验证数字大于0?

时间:2017-11-16 04:51:34

标签: python flask

我尝试在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'

我认为负值也是一个数字。

我该如何解决这个问题?感谢。

2 个答案:

答案 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”中的异常通过并查看导致异常的原因。