如何使用web2py验证list:字符串字段?

时间:2010-12-30 18:09:54

标签: python validation web2py

通过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),但验证不会发生。

1 个答案:

答案 0 :(得分:3)

从我通过调试可以看出,验证器由于某种原因从list:*字段中删除。这一定是个bug。您可以使用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"))

在您的控制器中:

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)