Тип constr
Тип constr применяется для аннотирования строковых полей в моделях Pydantic.
Он позволяет задать минимальную и максимальную длину строки,
а также регулярное выражение, которому строка должна соответствовать.
Параметр min_length задаёт минимальную длину,
параметр max_length - максимальную длину,
параметр pattern - регулярное выражение для проверки.
Синтаксис
from pydantic import constr
constr(min_length=None, max_length=None, pattern=None, strict=None)
Пример
Давайте создадим модель с полем, длина которого ограничена от 3 до 10 символов:
from fastapi import FastAPI
from pydantic import BaseModel, constr
app = FastAPI()
class User(BaseModel):
name: constr(min_length=3, max_length=10)
@app.post('/user/')
def create_user(user: User):
return {'name': user.name}
Результат выполнения кода для корректного имени:
{"name": "abcde"}
Пример
Давайте зададим шаблон для поля, чтобы строка содержала только буквы:
<+python+>
from fastapi import FastAPI
from pydantic import BaseModel, constr
app = FastAPI()
class Article(BaseModel):
title: constr(pattern=r'^[a-zA-Z]+$')
@app.post('/article/')
def create_article(article: Article):
return {'title': article.title}
<-python+>
Результат выполнения кода для корректного заголовка:
{"title": "article"}
Пример
Давайте объединим ограничение длины и шаблон в одном поле:
<+python+>
from fastapi import FastAPI
from pydantic import BaseModel, constr
app = FastAPI()
class User(BaseModel):
username: constr(min_length=3, max_length=20, pattern=r'^[a-z0-9_]+$')
@app.post('/user/')
def create_user(user: User):
return {'username': user.username}
<-python+>
Результат выполнения кода для корректного имени пользователя:
{"username": "user_1"}