2

python voluptuous で URL と電子メールの入力データを検証したいのですが、おそらく次のようなものです。

schema = Schema({
    Required('url'): All(str, Url()),
    Required('email'): All(str, Email())
})

ソースコードを見ると、voluptuous には Url 関数が組み込まれていることがわかりますが、メールの場合は組み込まれていないので、自分でビルドしたいと思います。問題は、この関数を呼び出す必要があるかどうかわからないことです。スキーマ内。

4

1 に答える 1

9

更新:今でvoluptuousは電子メールバリデーターを持っています。

このように独自のバリデータを書くことができます

import re
from voluptuous import All, Invalid, Required, Schema

def Email(msg=None):
    def f(v):
        if re.match("[\w\.\-]*@[\w\.\-]*\.\w+", str(v)):
            return str(v)
        else:
            raise Invalid(msg or ("incorrect email address"))
    return f

schema = Schema({
        Required('email') : All(Email())
    })

schema({'email' : "invalid_email.com"}) # <-- this will result in a MultipleInvalid Exception
schema({'email' : "valid@email.com"}) # <-- this should validate the email address
于 2013-03-08T11:30:29.190 に答える