python - 如何验证列表 :string fields with web2py?

标签 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),但验证并未发生。

最佳答案

据我通过调试得知,由于某种原因,验证器被从 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/

相关文章:

python - 在 Python 包上使用 Nose & NoseXUnit

python - 如何在 Tensorflow 的当前范围之外创建变量?

javascript - 输入字段上的两个函数调用,一个是 onBlur,一个不在 Angular 中

mysql - Express.js 和 MySQL 模型 + 验证

python - Web2py DAL 没有属性?

python - Web2py SQLFORM.grid 与 executesql

python - 如何过滤pandas数据框中小写的行和单词?

python 连接到 Azure 数据库

python - PyQT 中心工具栏按钮

Jquery Validation 验证表单数组