Установка зависимостей
| Команда | Описание |
pip install flask | Установка Flask |
pip install Flask-SQLAlchemy | Flask + SQLAlchemy интеграция |
pip install Flask-Migrate | Миграции через Alembic |
pip install pydantic | Pydantic 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), 201 | JSON-ответ с кодом 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 статус-коды
| Код | Значение |
200 | OK — успешный GET/PUT/DELETE |
201 | Created — успешный POST |
204 | No Content — успех без тела |
400 | Bad Request — ошибка клиента |
404 | Not Found — ресурс не найден |
422 | Unprocessable Entity — ошибка валидации |
500 | Internal Server Error |
Git — ветки для ДЗ
| Команда | Описание |
git checkout -b lesson/12-summary-3 | Создать ветку |
git add . | Добавить файлы |
git commit -m "feat: lesson 12 hw" | Коммит |