FastAPI Form Validation with Pydantic
Validate form data in FastAPI using Pydantic models with custom validators, field constraints, and automatic error response generation. Includes email.
Code
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, EmailStr, field_validator
app = FastAPI()
class UserForm(BaseModel):
email: EmailStr
password: str
name: str
@field_validator('password')
@classmethod
def validate_password(cls, v):
if len(v) < 8:
raise ValueError('Password must be at least 8 characters')
if not any(c.isupper() for c in v):
raise ValueError('Password must contain uppercase')
return v
@app.post('/register')
async def register(user: UserForm):
return {'email': user.email, 'name': user.name}