РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
190 of 307 menu

Тип EmailStr

Тип EmailStr применяется в моделях Pydantic для валидации email-адресов. Он импортируется из модуля pydantic и автоматически проверяет формат строки при создании модели или приёме данных из запроса. Если строка не является корректным email, Pydantic выбрасывает ошибку валидации. В FastAPI это приводит к ответу 422 с описанием проблемы.

Тип EmailStr требует установки дополнительного пакета email-validator. Без него при использовании типа возникнет ошибка импорта.

Синтаксис

from pydantic import BaseModel, EmailStr class Model(BaseModel): email: EmailStr

Пример

Давайте создадим модель с полем email и проверим корректный адрес:

from fastapi import FastAPI from pydantic import BaseModel, EmailStr app = FastAPI() class User(BaseModel): name: str email: EmailStr @app.post('/user') def create_user(user: User): return {'name': user.name, 'email': user.email}

Отправим POST-запрос с корректными данными:

{"name": "abcde", "email": "user@example.com"}

Результат выполнения кода:

{"name": "abcde", "email": "user@example.com"}

Пример

Давайте попробуем передать некорректный email и посмотрим, как FastAPI вернёт ошибку валидации:

from fastapi import FastAPI from pydantic import BaseModel, EmailStr app = FastAPI() class User(BaseModel): name: str email: EmailStr @app.post('/user') def create_user(user: User): return {'name': user.name, 'email': user.email}

Отправим POST-запрос с некорректным адресом:

{"name": "abcde", "email": "not-an-email"}

Результат выполнения кода:

{ "detail": [ { "type": "value_error", "loc": ["body", "email"], "msg": "value is not a valid email address: An email address must have an @-sign.", "input": "not-an-email" } ] }

Пример

Давайте проверим валидацию напрямую через модель Pydantic, без запуска FastAPI-приложения:

from pydantic import BaseModel, EmailStr, ValidationError class User(BaseModel): email: EmailStr try: user = User(email='user@example.com') print(user.email) except ValidationError as e: print(e)

Результат выполнения кода:

"user@example.com"

Смотрите также

  • класс BaseModel,
    от которого наследуются все модели Pydantic
  • тип HttpUrl,
    который валидирует HTTP-ссылки
  • тип SecretStr,
    который скрывает значение строки при выводе
  • класс Field,
    который добавляет описание и ограничения к полю
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить