在 gluon.validators
中搜索时,我遇到了 IS_LIST_OF()
,因此我尝试将其添加到我的模型中:
db.define_table("emails_list",
Field("recipients", "list:string", requires=IS_LIST_OF(IS_EMAIL(
error_message="Invalid email")))
)
我验证了收件人是否已正确添加到数据库中(顺便说一句,我使用 SQLFORM
),但验证并未发生。
最佳答案
据我通过调试得知,由于某种原因,验证器被从 list:* 字段中删除。这一定是一个错误。您可以使用 form.accepts 的 onvalidation 属性来解决这个问题。这是一个例子:
在您的模型中:
def validate_email(form):
for eml in form.vars.recipients:
out,ers = IS_EMAIL()(eml)
if ers:
form.errors.receipients = ers
db.define_table("emaillist",
Field("recipients", "list:string"))
在你的 Controller 中:
def listtest():
form = SQLFORM(db.emaillist)
if form.accepts(request.vars,session,
onvalidation=validate_email):
response.flash = "Got it"
else:
response.flash = form.errors
return dict(form=form)
关于python - 如何验证列表 :string fields with web2py?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4565069/