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.

Python Fastapi Form Validation

Code

snippet
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}