/
liquid-g
/
liquid-code
Обзор
Документация
Войти
/
liquid-g
/
liquid-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop-0.4
examples/pydantic_example.py
66 строк
3 KB
User
0.4.11 - интеграция Pydantic для автоматической сериализации и десериализации моделей
06 июл 2026, 14:58
06 июл 2026, 14:58
d729128
Код
Авторство
О чём код?
""" Пример использования Pydantic с LiquidCode. Этот пример демонстрирует автоматическую сериализацию и десериализацию Pydantic-моделей в контроллерах. """ from liquidcode import route from liquidcode.contracts import Request from liquidcode.http import HttpResponse from pydantic import BaseModel class User(BaseModel): """Pydantic модель пользователя.""" id: int name: str email: str class UserController: """Контроллер для работы с пользователями.""" @route('/api/users') def index(self, request: Request) -> HttpResponse: """GET /api/users — список пользователей (сериализация).""" users = [ User(id=1, name="John Doe", email="john@example.com"), User(id=2, name="Jane Smith", email="jane@example.com"), ] # HttpResponse автоматически сериализует список моделей в JSON return HttpResponse(users) @route('/api/users/{id:\\d+}') def show(self, request: Request, id: int) -> HttpResponse: """GET /api/users/{id} — один пользователь (сериализация).""" user = User(id=id, name="John Doe", email="john@example.com") # HttpResponse автоматически сериализует модель в JSON return HttpResponse(user) @route('/api/users', methods=['POST']) def create(self, request: Request, data: User) -> HttpResponse: """POST /api/users — создание пользователя (десериализация).""" # data уже валидированная User модель return HttpResponse( {'message': 'User created', 'user': data.model_dump()}, 201 ) @route('/api/users/{id:\\d+}', methods=['PUT']) def update(self, request: Request, id: int, data: User) -> HttpResponse: """PUT /api/users/{id} — обновление пользователя (десериализация).""" # data — валидированная User модель из тела запроса return HttpResponse( {'message': f'User {id} updated', 'user': data.model_dump()} ) # Пример запуска: # if __name__ == '__main__': # from liquidcode import Application # # app = Application() # app.load_config("config/config.yaml") # app.add_controller(UserController) # app.run()