mirror of
https://github.com/kennethreitz/pydantic.git
synced 2026-06-05 23:00:18 +00:00
Better validators (#97)
* working on improved validators * full tests for validators * tweask * tweaking fields.py * adding docs * add history * fix classmethod validators
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
from pydantic import BaseModel, ValidationError, validator
|
||||
|
||||
|
||||
class UserModel(BaseModel):
|
||||
name: str
|
||||
password1: str
|
||||
password2: str
|
||||
|
||||
@validator('name')
|
||||
def name_must_contain_space(cls, v):
|
||||
if ' ' not in v:
|
||||
raise ValueError('must contain a space')
|
||||
return v.title()
|
||||
|
||||
@validator('password2')
|
||||
def passwords_match(cls, v, values, **kwargs):
|
||||
if 'password1' in values and v != values['password1']:
|
||||
raise ValueError('passwords do not match')
|
||||
return v
|
||||
|
||||
|
||||
print(UserModel(name='samuel colvin', password1='zxcvbn', password2='zxcvbn'))
|
||||
# > UserModel name='Samuel Colvin' password1='zxcvbn' password2='zxcvbn'
|
||||
|
||||
try:
|
||||
UserModel(name='samuel', password1='zxcvbn', password2='zxcvbn2')
|
||||
except ValidationError as e:
|
||||
print(e)
|
||||
"""
|
||||
2 errors validating input
|
||||
name:
|
||||
must contain a space (error_type=ValueError track=str)
|
||||
password2:
|
||||
passwords do not match (error_type=ValueError track=str)
|
||||
"""
|
||||
Reference in New Issue
Block a user