Quick Start
Get up and running with PyValidX in just a few minutes!
Your First Validated Model
Let's create a simple user model with validation:
from pyvalidx import ValidatedModel, field_validated
from pyvalidx.core import is_required
from pyvalidx.string import is_email
class User(ValidatedModel):
name: str = field_validated(is_required())
email: str = field_validated(is_required(), is_email())
age: int = field_validated(is_required())
# Create a valid user
user = User(
name='John Doe',
email='john@example.com',
age=25
)
print(f'Created user: {user.name}')
# Try to create an invalid user
try:
invalid_user = User(name='', email='invalid-email', age=25)
except ValidationException as e:
print('Validation failed:')
for field, error in e.validations.items():
print(f'- {field}: {error}')
Multiple Validators on One Field
You can apply multiple validators to a single field:
from pyvalidx.core import min_length, max_length
from pyvalidx.string import is_strong_password
class SecureUser(ValidatedModel):
username: str = field_validated(
is_required(),
min_length(3),
max_length(20)
)
password: str = field_validated(
is_required(),
min_length(8),
is_strong_password()
)
# This will validate all conditions
secure_user = SecureUser(
username='alice123',
password='MySecurePass123!'
)
Custom Error Messages
Customize error messages for better user experience:
from pyvalidx.core import is_required
class Product(ValidatedModel):
name: str = field_validated(
is_required('Product name is required')
)
price: float = field_validated(
is_required('Price must be specified')
)
try:
Product(name='')
except ValidationException as e:
print(e.to_dict())
# Custom messages will be shown
Conditional Validation
Make fields required based on other fields:
from pyvalidx.core import required_if
class Order(ValidatedModel):
payment_method: str = field_validated(is_required())
credit_card_number: str = field_validated(
required_if('payment_method', 'credit_card',
'Credit card number required for card payments'),
default=''
)
# Valid - no card payment
order1 = Order(payment_method='cash')
# Valid - card payment with number
order2 = Order(
payment_method='credit_card',
credit_card_number='4111111111111111'
)
# Invalid - card payment without number
try:
Order(payment_method='credit_card')
except ValidationException as e:
print('Card number required!')
Working with Dates
Validate date fields easily:
from pyvalidx.date import is_date, is_future_date
class Event(ValidatedModel):
name: str = field_validated(is_required())
start_date: str = field_validated(
is_required(),
is_date('%Y-%m-%d'),
is_future_date('%Y-%m-%d', 'Event must be in the future')
)
# Valid future event
event = Event(name='Conference', start_date='2025-12-01')
Numeric Validation
Validate numbers with range constraints:
from pyvalidx.numeric import is_positive, min_value, max_value
class Product(ValidatedModel):
name: str = field_validated(is_required())
price: float = field_validated(
is_required(),
is_positive('Price must be positive'),
min_value(0.01, 'Minimum price is $0.01')
)
quantity: int = field_validated(
is_required(),
min_value(1),
max_value(1000, 'Maximum quantity is 1000')
)
product = Product(name='Widget', price=19.99, quantity=5)
What's Next?
Now that you've seen the basics, explore more advanced features:
- Basic Concepts - Understand PyValidX architecture
- All Validators - Complete validator reference
- Custom Validators - Create your own validators