私は入力フォームから返された数値をPythonで検証しようとしました。入力値は数でなければならず、0より大きいpythonでnumberを検証する方法は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 should be greater than 0'
を上げることはありませんが、pythonは数値ではないとみなして'Please enter number only'
を呼びます。
負の値も数値だと思います。
どうすればこの問題を解決できますか?ありがとう。
あなたは 'try'ブロックの前の数値の値が、実際には、あなたが入力した数値であることを確認したことがありますか? 'print'はチェックするのに役立つかもしれません。 – roelofs
ちなみに、 '<0'は' == 0'をチェックしません。これは "0より大きい"ではありません。 –
@roelofs、私が単にレイズしないと、正しく検証されます。 –