我正在编写一个Flask应用程序,我想对一些字段进行验证检查,并且只有在字段中插入的值为integer或None时才能继续POST请求。
字段只能包含整数或None
,如果字段是None
,则应将其替换为0。
这是我的代码:
class Validation():
def __init__(self, param, param_name):
self.param = param
self.param_name = param_name
def check_int(param):
try:
int(param)
return True
except ValueError:
return False
def check(param, param_name):
param = param.strip()
if param == "":
return 0
elif Validation.check_int(param):
return param
else:
flash(f"The {param_name} must be an integer!")
exit()
问题是,如果字段包含一些字符串,这将触发exit()
函数,我的程序将停止。我只想在屏幕上显示这个字段必须是整数的消息,而不执行我的views.py
文件中的POST请求:
if request.method == "POST":
Validation.check(test1, "Test 1 Parameter")
Validation.check(test2, "Test 2 Parameter")
Validation.check(test3, "Test 3 Parameter")
return render_template('test.html', form = form)
[EDIT]:在网页上,我有:test1
、test2
和test3
字段,还有一个提交按钮。测试字段在forms.py文件中定义为TextField
,可以为空,也可以使用整数作为值。如果用户输入浮点值或字符串,则屏幕上应闪烁一条消息,说明输入无效,并且按下提交按钮后不应执行发布请求。
class Validation():
def check_int(self,param):
return param.isdigit()
def check(self, param, param_name):
param = param.strip()
if param == "":
return 0
elif Validation.check_int(param):
return param
else:
flash(f"The {param_name} must be an integer!")
return False
views.py:
if request.method == "POST":
test1 = Validation.check(test1, "Test 1 Parameter")
test2 = Validation.check(test2, "Test 2 Parameter")
test3 = Validation.check(test3, "Test 3 Parameter")
if test1 is not False and test2 is not False and test3 is not False:
return render_template('test.html', form = form)