python - 烧瓶中的Python参数验证类
问题描述
我正在编写一个 Flask 应用程序,并且我想对某些字段运行验证检查,并且仅当字段中插入的值是整数或 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)
[编辑]:在网页上,我有: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
视图.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)
推荐阅读
- javascript - 使用循环触发多个锚标签的相同 onclick 功能
- typescript - TypeScript:指定方法返回“this”类型
- javascript - 如何在点击时将新页面滚动到顶部?
- python - 我无法在我的 python 3.8 中安装 PyAudio 我该怎么办?
- reactjs - React onClick:无法读取未定义的属性'functionName'
- git - 有没有办法在 github 上查看 .ipynb 文件更改但不是 JSON 格式?
- javascript - Firebase 函数和外部节点包
- java - 保护 <、> 和 & 是否足以清理 Swing 组件中的 HTML?
- django - Django循环到没有使用orm的循环
- reactjs - Next.js & Passport.js/Express:如何调试“TypeError:无法读取未定义的属性‘0’”响应