Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.
Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.
3 046 подписчиков · @BookPython
К каналу →
Structured Concurrency в Python 3.11+ (TaskGroup vs Gather) Если вы до сих пор используете asyncio.gather() для запуска конкурентных задач, вы, вероятно, теряете контроль над ошиб…
Читать далее →
6 419
Реклама
Списковые включения (list comprehensions) могут содержать несколько операторов for и if: In : [(x, y) for x in range(3) for y in range(3)] Out: [ (0, 0), (0, 1), (0, 2), (…
Читать далее →
6 504

Pydantic V2: model_validator вместо root_validator

Pydantic V2: Забываем root_validator, используем model_validator правильно

Переход на Pydantic V2, это не только ускорение за счет ядра на Rust, но и переосмысление валидации.
Самая частая боль при миграции, проверка зависимостей между несколькими полями.

В V1 мы использовали root_validator и работали со словарем values (прощай, автодополнение IDE).
В V2 правильный путь - model_validator в режиме after.

В чем соль?
В режиме mode='after' валидация запускается после того, как поля были распаршены и приведены к типам.
Вы работаете с экземпляром класса (self), а не с сырым словарем.

Пример (валидация периода дат):

from pydantic import BaseModel, model_validator
from datetime import datetime

class DateRange(BaseModel):
start_dt: datetime
end_dt: datetime

@model_validator(mode='after')
def check_dates_order(self):
# Обращаемся через self — IDE видит поля и их типы!
if self.end_dt <= self.start_dt:
raise ValueError("Дата окончания должна быть позже начала")
return self

# Тест
try:
DateRange(
start_dt="2024-01-01T12:00:00",
end_dt="2023-01-01T12:00:00"
)
except ValueError as e:
print(e)

Нюансы для профи:

1. mode='before': Используйте только если вам нужно модифицировать сырые входные данные (например, JSON)
до того, как Pydantic начнет их парсить. Это аналог pre=True из V1.

2. Производительность: Валидаторы на Python, это узкое горлышко. Если у вас HighLoad, старайтесь выразить
ограничения через Field (например, ge, le), так как они отрабатывают на Rust-уровне, что значительно
быстрее вызова python-функции.

Используйте возможности типизации на 100%.

#pydantic #fastapi #bestpractices #python

👉 @BookPython
🐍 Как улучшить читаемость кода в Python? Читаемый код - это не роскошь, а необходимость. Если ваш код трудно понять, даже если он работает, это плохой код. Сегодня разберем нескол…
Читать далее →
6 439
📌 Декораторы в Python: как они работают и зачем нужны? Сегодня я покажу вам, как работают декораторы в Python и зачем они вообще нужны. Декораторы позволяют изменять поведение фу…
Читать далее →
6 455
Другие главы канала «Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.»
Выберите главу, чтобы продолжить чтение
Все посты →
Глава от 25.09.2026
Как быстро очистить список в Python? Сегодня я покажу вам несколько способов оч…
👁 463 просмотров
Глава от 24.09.2026
Работаете с СУБД? Присоединяйтесь к сообществу Pangolin для разработчиков и адми…
👁 546 просмотров
Глава от 24.09.2026
🚀 5 крутых Python-фишек, о которых знают не все Python — мощный и удобный язы…
👁 600 просмотров
Глава от 23.09.2026
🔥 Как ускорить Python-код в 10 раз? Сегодня покажу вам мощный инструмент для оп…
👁 741 просмотров
Глава от 22.09.2026
Контейнеры в одном инструменте, виртуалки — в другом, частное облако — вообще от…
👁 722 просмотров
Глава от 21.09.2026
10 полезных библиотек для Python-разработчика Сегодня я подготовил для вас подб…
👁 851 просмотров
Глава от 17.09.2026
ИТ-сообщество, хватит онлайн-митапов – приходите офлайн. 18 сентября в Москве с…
👁 543 просмотров
Глава от 16.09.2026
Если у вас есть ресурсоемкая задача для процессора и вы хотите использовать все …
👁 1 011 просмотров
Глава от 16.09.2026
Создание кроссплатформенного приложения с GUI на Rust: От идеи до реальности El…
👁 918 просмотров

Популярные посты канала «Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.»

Как упростить работу с аргументами в командной строке с помощью typer Раньше для CLI-приложений на Python я использовал argparse, потом был…
👁 8 025 просмотров
Создание объекта в Python включает два ключевых этапа. Сначала вызывается метод __new__, который создаёт и возвращает новый объект. Затем вы…
👁 8 023 просмотров
🚀 Как логировать без боли в Python Как настроить логирование в Python один раз — и больше к этому не возвращаться. Обычно начинающие разра…
👁 7 991 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 7 983 просмотров
💡 Как избежать повторения кода с помощью functools.partial Как упростить код и избежать дублирования с помощью functools.partial. Допустим…
👁 7 971 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 7 941 просмотров
В Python оператор квадратных скобок [] можно переопределить, реализовав магический метод __getitem__. Это позволяет, например, создать объек…
👁 7 919 просмотров
Популярный способ объявить абстрактный метод в Python — это выбросить исключение NotImplementedError: def human_name(self): raise NotIm…
👁 7 841 просмотров
Встроенные значения float в Python используют оборудование вашего компьютера напрямую, поэтому любое значение представляется внутренне в вид…
👁 7 817 просмотров
Иногда в программе нужна очередь — контейнер, куда элементы добавляются с одной стороны и извлекаются с другой. В Python для этого можно исп…
👁 7 805 просмотров
Существует два понятия с похожими названиями, которые легко перепутать: переопределение (overriding) и перегрузка (overloading). Переопреде…
👁 7 770 просмотров
Иногда возникает необходимость выполнить участок кода и проигнорировать все возможные исключения. Это оправдано в случае с плагинами, сторон…
👁 7 752 просмотров
⚠️ Можно знать алгоритмы машинного обучения и всё равно получать плохие результаты. Большинство проблем моделей начинаются с некачественной …
👁 7 743 просмотров
Есть три ситуации, в которых только что созданную переменную нельзя аннотировать типом: распаковка кортежей, циклы for и инструкции with. В…
👁 7 701 просмотров
В Python имя переменной может состоять из одного символа подчёркивания: _. Хотя такие имена обычно недостаточно описательны и их не стоит ис…
👁 7 697 просмотров
Некоторый код может выводить интересующие вас данные в stdout, вместо того чтобы предоставлять API, возвращающий строку, пригодную для испол…
👁 7 656 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 7 624 просмотров
Скрытые фичи Enum: как выжать максимум Многие используют Enum как простой список констант. Но у enum.Enum в Python есть куда больше возможн…
👁 7 620 просмотров
Обычно вы взаимодействуете с генератором, запрашивая данные с помощью next(gen). В Python 3 вы также можете отправлять значения обратно в ге…
👁 7 605 просмотров
Чтобы отсортировать словарь по его значениям, используйте функцию sorted с пользовательской функцией ключа: >>> d = dict(a=1, c=3, b=2) >>>…
👁 7 574 просмотров

Связанные темы в других каналах

Каналы из той же тематики, где часто появляются близкие сюжеты
Вся тема →
@canalmaxone
AntiCloudMod
👥 364 077 · -7 550/7д
@BelgorodDRONE
Информация БПЛА Белгород, Белгородский район
7924148410
👥 199 707 · +1 160/7д
@biologia89
РОБЛОКС🔷
РОБЛОКС В МАКС! Реклама: https://clck.ru/3Tmmgx
👥 178 041 · -2 924/7д
@WylsacomRed
Wylsacom Red
Официальный канал Wylsacom в Max. Тут всё про технологии и жизнь в ногу со временем! Розыгрыши: kichaev@wylsacom.media По вопросам сотрудничества: https://wylsacom.medi…
👥 174 987 · +7 129/7д
@TikTokModCloud
TikTokModCloud
Официальные обновления стабильного мода TikTok Чат: https://clck.ru/3S6mVh По рекламе: https://iimax.ru/dim4ugan
👥 124 246 · +1 574/7д
@yandex_browser
Яндекс Браузер с Алисой AI
Привет, это канал команды Яндекс Браузера Показываем, как превратить наши технологии в ваши возможности. Скачать Браузер тут: https://browser.yandex.ru/ Наше сообще
👥 78 431 · -2 774/7д
🏷 Темы и теги
#pydantic #fastapi #bestpractices #python #telegram боты #парсинг сайтов #обучение программированию #backend разработка #django #Технологии
📋 О канале Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.
Учим язык Python на практике. Создание веб-приложений: Django, Flask, FastAPI. Пишем ботов для Телеграм на Aiogram. Парсинг сайтов (Web Scraping): Selenium, BeautifulSoup (BS4), Scrapy. Работа с базами данных (PostgreSQL, Redis, SQL) и API. Асинхронное программирование (Asyncio). Настройка Docker, Git и Linux. Алгоритмы, задачи с собеседований и Roadmap для Junior Python Developer.
🔍 Архив всех постов Макс
Поиск по 17,101,415 постам из 203,938 каналов
Подключить за 490 ₽/мес →
Удалить пост или канал с МАКСОТЕКИ
Заявка подтверждается через бота Макс: нужно быть администратором канала и добавить бота МАКСОТЕКИ в администраторы. После проверки канал или конкретный пост скрывается с сайта.
📊 Аналитика канала «Python Разработка | Web Backend, Парсинг & Telegram Bots. Пайтон программирование с нуля. Django, FastAPI и SQL. Уроки для начинающих и IT карьера. Coding.» ➡️ Перейти в канал Макс
Заявка в МАКСОТЕКА
➕
Добавьте свой канал в каталог
Зарегистрируйтесь в личном кабинете и добавьте канал за пару кликов.
Перейти в личный кабинет →

Бесплатная регистрация, быстрая модерация.