UsageΒΆ
All validation is done by Validator
subclasses,
and the fields from valedictory.fields
.
The schema to validate data against is defined declaratively
by subclassing Validator
:
from valedictory import Validator, fields
class ContactValidator(Validator):
name = fields.CharField()
height = fields.IntegerField()
date_of_birth = fields.DateField()
Validator
instances are immutable,
so the same instance can be reused to validate all your data.
contact_validator = ContactValidator()
Validation is done by calling the clean()
method
on a Validator
instance.
clean()
will either returned the cleaned data,
or raise an InvalidDataException
.
InvalidDataException
instances
store all the validation errors found when validating the data.
These can be used to create an appropriate error response.
from valedictory.exceptions import InvalidDataException
input_data = json.loads(request.body)
try:
cleaned_data = contact_validator.clean(input_data)
# Save the data
Contact.objects.create(**cleaned_data)
except InvalidDataException as errors:
# Handle the error
for path, message in errors.flatten():
print("{0}: {1}".format('.'.join(path), message))