【发布时间】:2015-06-24 14:05:01
【问题描述】:
让我从平常开始 - 我对 Python 和 Flask 都是新手。在发布这个问题(我在这里的第一个问题)之前,我花了数小时搜索和试验,不幸的是到目前为止没有运气。
我正在构建 Web 表单,用户可以在其中定义防火墙规则,这些规则随后会记录在数据库中。我正处于验证阶段,我在这里碰壁了......希望有人能够帮助我。
我的(这里简化了)表单有 2 个字段 - src_ip 和 dst_ip:
class FirewallRule(Form)
src_ip = StringField('Source IP')
dst_ip = StringField('Destination IP')
我的验证要求是:
- 必须填写至少 1 个字段(两者都可以)
- 填写的字段必须包含有效的 IP 地址
wtforms.validators.IPAddress() 和自定义验证函数似乎是我的朋友,但我正在努力寻找将它们连接在一起的方法。
基本上我正在尝试构建条件验证:
- 如果不是(src_ip 或 dst_ip);返回错误
- 如果 src_ip AND src_ip 不是有效的 IP 地址;返回错误
- 如果 dst_ip AND dst_ip 不是有效的 IP 地址;返回错误
- 返回真
显然我想重用 IPAddress() [或通常任何内置验证器],而不是自己编写。
我确信以前一定有人做过。不幸的是,我找不到任何正确方向的指针。
提前致谢。
【问题讨论】:
-
您可以尝试重新加载表单的validate 方法并在需要时提高ValidationError。
-
@dizballanze 这可以让我确保至少填写一个字段,但我将无法使用验证器来验证输入
标签: python forms validation flask flask-wtforms