🔖 Справочник Flask-блока (Уроки 09–11)

Установка зависимостей

КомандаОписание
pip install flaskУстановка Flask
pip install Flask-SQLAlchemyFlask + SQLAlchemy интеграция
pip install Flask-MigrateМиграции через Alembic
pip install pydanticPydantic v2 для контрактов
pip install email-validatorПоддержка EmailStr в Pydantic

Flask — основное API

КодОписание
app = Flask(__name__)Создать приложение
app.config.from_object(Config)Загрузить конфигурацию из класса
@app.route('/path', methods=['GET','POST'])Зарегистрировать маршрут
request.get_json()Получить JSON из тела запроса
request.args.get('key')Query-параметр из URL
jsonify(data)Создать JSON-ответ
return jsonify(data), 201JSON-ответ с кодом 201

Blueprints

КодОписание
bp = Blueprint('name', __name__, url_prefix='/path')Создать Blueprint
@bp.route('/', methods=['GET'])Маршрут внутри Blueprint
app.register_blueprint(bp)Зарегистрировать Blueprint
<int:id>Конвертер URL: целое число
<string:name>Конвертер URL: строка

Flask-SQLAlchemy

КодОписание
db = SQLAlchemy()Создать объект расширения
db.init_app(app)Подключить к приложению
class M(db.Model)Объявить модель
db.Column(db.Integer, primary_key=True)Первичный ключ
db.Column(db.String(255), nullable=False)Строка, обязательная
db.relationship('Model', backref='attr')Связь ORM
db.session.add(obj)Добавить объект в сессию
db.session.commit()Сохранить изменения
db.session.delete(obj)Удалить объект
Model.query.all()Все записи (устаревший API)
db.session.get(Model, pk)По первичному ключу (Flask-SA 3.x)

Миграции (Flask-Migrate)

КомандаОписание
flask db initИнициализировать папку migrations/
flask db migrate -m "Initial migration"Создать файл миграции
flask db upgradeПрименить миграции
flask db downgradeОткатить последнюю миграцию
flask db historyИстория версий миграций

Pydantic v2 — контракты

КодОписание
class Schema(BaseModel)Объявить схему
Field(..., min_length=12)Обязательное поле с ограничением
model_config = ConfigDict(from_attributes=True)Разрешить создание из ORM-объекта
Schema.model_validate(orm_obj)Создать схему из ORM-объекта
schema.model_dump()Преобразовать в dict
except ValidationError as e: e.errors()Получить список ошибок

HTTP статус-коды

КодЗначение
200OK — успешный GET/PUT/DELETE
201Created — успешный POST
204No Content — успех без тела
400Bad Request — ошибка клиента
404Not Found — ресурс не найден
422Unprocessable Entity — ошибка валидации
500Internal Server Error

Git — ветки для ДЗ

КомандаОписание
git checkout -b lesson/12-summary-3Создать ветку
git add .Добавить файлы
git commit -m "feat: lesson 12 hw"Коммит