πUnit 17: Additional Models
Introduction
Example program
from fastapi import FastAPI
from pydantic import BaseModel, EmailStr
app = FastAPI()
class UserIn(BaseModel):
username: str
password: str
email: EmailStr
full_name: str = None
class UserOut(BaseModel):
username: str
email: EmailStr
full_name: str = None
class UserDB(BaseModel):
username: str
hashed_password: str
email: EmailStr
full_name: str = None
def fake_password_hasher(raw_password: str):
"""This is a fake password hasher, don't use it in production."""
return "salted_" + raw_password
def fake_save_user(user_in: UserIn):
hashed_password = fake_password_hasher(user_in.password)
user_db = UserDB(**user_in.model_dump(), hashed_password=hashed_password)
print("User has been saved to an imaginary database!")
return user_db
@app.post("/user/", response_model=UserOut)
async def create_user(user: UserIn):
user_saved = fake_save_user(user)
return user_savedReduce code duplication
Last updated