Pydantic
, предназначенной для валидации данных и создания моделей данных в Python.Она используется в основном для работы с данными, получаемыми из API, конфигурационных файлов или других источников.
Pydantic обеспечивает проверку типов и валидацию данных на основе аннотаций типов, что позволяет разработчикам создавать надежные и безопасные приложения.
Изменения в API: В
Pydantic 2.0
произошли значительные изменения в API, включая упрощение и улучшение читаемости кода. Некоторые старые функции были удалены или изменены, чтобы сделать библиотеку более интуитивной.Поддержка данных в формате JSON: Pydantic 2.0 предлагает улучшенную работу с данными в формате JSON, что позволяет проще обрабатывать входные и выходные данные в виде JSON-объектов.
Улучшенная производительность: Новая версия оптимизирована для повышения производительности, что позволяет быстрее обрабатывать и валидировать данные.
Расширяемость: В Pydantic 2.0 улучшена система расширяемости, что позволяет разработчикам легко создавать собственные типы данных и валидации.
Поддержка dataclasses: Улучшенная интеграция с встроенными dataclasses, что упрощает их использование вместе с Pydantic.
Статическая типизация: Библиотека поддерживает статическую типизацию и интеграцию с такими инструментами, как mypy, что помогает выявлять ошибки на этапе разработки.
Использование BaseModel: В Pydantic 2.0 продолжается использование BaseModel для создания моделей данных, но с новыми возможностями и улучшенной логикой.
Установка `Pydantic`:
pip install pydantic
Пример кода:
from pydantic import BaseModel, EmailStr, conint, Field, validator, constr
from typing import Optional
import re
class User(BaseModel):
username: constr(min_length=3, max_length=30) # Имя пользователя: от 3 до 30 символов
email: EmailStr # Электронная почта с проверкой формата
age: conint(ge=0) # Возраст: неотрицательное целое число
bio: Optional[str] = Field(default=None, max_length=150) # Опциональная биография, максимум 150 символов
is_active: bool = True # Активный статус пользователя
password: constr(min_length=8) # Пароль: минимум 8 символов
@validator('username')
def validate_username(cls, v):
if not v.isalnum():
raise ValueError('Имя пользователя должно содержать только буквы и цифры')
return v
@validator('bio')
def validate_bio(cls, v):
if v and 'плохое_слово' in v: # Пример фильтрации нецензурных слов
raise ValueError('Биография не должна содержать нецензурных слов')
return v
@validator('password')
def validate_password(cls, v):
if not (re.search(r'[A-Za-z]', v) and re.search(r'[0-9]', v) and re.search(r'[!@#$%^&*(),.?":{}|<>]', v)):
raise ValueError('Пароль должен содержать хотя бы одну букву, одну цифру и один специальный символ')
return v
def __str__(self):
return f"User(username={self.username}, email={self.email}, age={self.age}, bio={self.bio}, is_active={self.is_active})"
Pydantic 2.0
является мощным инструментом для разработки приложений, требующих надежной валидации данных и строгой типизации, особенно в сочетании с такими фреймворками, как FastAPI.Please open Telegram to view this post
VIEW IN TELEGRAM
👍2💋1
⚽️ Soccer Hub — это веб-приложение, разработанное на фреймворке FastAPI, которое предоставляет API для управления информацией о футбольных командах, матчах и аналитикой.
Проект ориентирован на поддержку адаптивного дизайна, что позволяет пользователям удобно получать доступ к данным с различных устройств.
Приложение также включает в себя систему аналитики для отслеживания посещаемости и действий пользователей.
Структура проекта
Используемые технологии
1️⃣ FastAPI: Фреймворк для создания высокопроизводительных API.
2️⃣ Pydantic: Для валидации и сериализации данных.
3️⃣ SQLAlchemy: ORM для работы с базой данных.
4️⃣ Alembic: Миграции базы данных.
5️⃣ Docker: Для контейнеризации приложения (опционально).
4️⃣ Репозиторий на GitHub
⌨️ Теги: #сайт #аналитика #fastapi #web #api #pydantic #sqlalchemy #alembic #docker #фреймворк #analytics #maximdupley #quadd4rv1n7 #2024
Проект ориентирован на поддержку адаптивного дизайна, что позволяет пользователям удобно получать доступ к данным с различных устройств.
Приложение также включает в себя систему аналитики для отслеживания посещаемости и действий пользователей.
Структура проекта
soccer_hub/
├── app/
│ ├── __init__.py # Инициализация FastAPI приложения
│ ├── main.py # Запуск приложения
│ ├── core/
│ │ ├── config.py # Конфигурации приложения
│ │ └── security.py # Функции безопасности
│ │
│ ├── db/
│ │ ├── database.py # Подключение к базе данных
│ │ ├── models.py # Модели данных
│ │ └── schemas.py # Схемы Pydantic для валидации
│ │
│ ├── routes/ # API маршруты
│ │ ├── __init__.py # Инициализация маршрутов
│ │ ├── analytics.py # Маршруты аналитики
│ │ ├── players.py # Маршруты игроков
│ │ ├── teams.py # Маршруты команд
│ │ └── matches.py # Маршруты матчей
│ │
│ ├── services/ # Логика бизнес-процессов
│ │ ├── team_service.py # Сервис для работы с командами
│ │ └── match_service.py # Сервис для работы с матчами
│ │
│ ├── templates/ # HTML шаблоны
│ │ ├── base.html # Основной шаблон
│ │ ├── index.html # Главная страница
│ │ ├── analytics.html # Страница аналитики
│ │ ├── matches.html # Страница матчей
│ │ ├── players.html # Страница игроков
│ │ ├── team.html # Подробнее о команде
│ │ └── teams.html # Страница команд
│ │
│ ├── static/ # Статические файлы (CSS, JS, изображения)
│ │ ├── css/ # Файлы стилей
│ │ ├── js/ # Файлы скриптов
│ │ └── images/ # Фотографии
│ │
│ └── analytics/ # Аналитика посещаемости и действий
│
├── tests/ # Тесты для приложения
│ ├── test_routes.py # Тесты для маршрутов
│ └── test_services.py # Тесты для сервисов
│
├── add_data.py # Добавление данных в БД
├── create_db.py # Создание базы данных
│
├── .env # Переменные окружения
├── .gitignore # Файлы и папки, которые нужно игнорировать в Git
├── alembic/ # Миграции базы данных (если используем Alembic)
│ └── env.py # Конфигурация миграций
│
├── docker-compose.yml # Docker для контейнеризации (опционально)
├── README.md # Описание репозитория проекта
├── requirements.txt # Зависимости проекта
└── run.py # Точка входа для запуска проекта
Используемые технологии
⌨️ Теги: #сайт #аналитика #fastapi #web #api #pydantic #sqlalchemy #alembic #docker #фреймворк #analytics #maximdupley #quadd4rv1n7 #2024
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2