Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Что такое фреймворк
Определение
Фреймворк (framework) — это готовый набор инструментов, библиотек и соглашений, который предоставляет основу (скелет) для разработки приложений. Фреймворк определяет структуру проекта, предоставляет переиспользуемые компоненты и устанавливает правила взаимодействия между ними.
Ключевые различия: Library vs Framework
Библиотека
Вы вызываете код библиотеки:
# requests — это библиотека
import requests
response = requests.get('https://api.example.com/data')
data = response.json()
print(data)
Фреймворк
Фреймворк вызывает ваш код (Inversion of Control):
# FastAPI — это фреймворк
from fastapi import FastAPI
app = FastAPI()
# Фреймворк вызывает этот обработчик автоматически
@app.get("/data")
async def get_data():
return {"data": "hello"}
Основные компоненты фреймворка
1. Структура проекта
Фреймворк определяет, как организовать файлы:
# Django структура
project/
├── manage.py
├── project/
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── app/
│ ├── models.py
│ ├── views.py
│ ├── urls.py
│ └── templates/
2. Маршрутизация
Автоматическое направление запросов к нужным обработчикам:
# Flask
@app.route('/users')
def get_users():
return {"users": []}
# FastAPI
@app.get("/users")
async def get_users():
return {"users": []}
3. Работа с БД (ORM)
Объектно-реляционное отображение упрощает работу с базой:
# SQLAlchemy ORM
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
name = Column(String)
email = Column(String)
# Использование
user = session.query(User).filter(User.id == 1).first()
user.name = "John"
session.commit()
4. Валидация данных
Автоматическая проверка входящих данных:
# Pydantic (используется в FastAPI)
from pydantic import BaseModel
class UserCreate(BaseModel):
name: str
email: str
age: int
@app.post("/users")
def create_user(user: UserCreate):
return {"created": user.name}
5. Шаблонизация
Генерация HTML с переменными:
# Jinja2 в Django
# template.html
<h1>Hello, {{ username }}!</h1>
<ul>
{% for item in items %}
<li>{{ item }}</li>
{% endfor %}
</ul>
6. Middleware и обработка ошибок
Обработка запросов и ответов:
# FastAPI middleware
from fastapi import FastAPI
from starlette.middleware.cors import CORSMiddleware
app = FastAPI()
@app.middleware("http")
async def add_header(request, call_next):
response = await call_next(request)
response.headers["X-Process-Time"] = "0.1"
return response
Популярные Python фреймворки
| Фреймворк | Использование | Масштаб |
|---|---|---|
| Django | Full-stack веб | Крупные приложения |
| FastAPI | REST API | Микросервисы |
| Flask | Микрофреймворк | Простые приложения |
| Tornado | Асинхронный веб | Real-time |
| Celery | Task queue | Background задачи |
| pytest | Testing | Тестирование |
Преимущества
- Ускорение разработки
- Best practices встроены
- Встроенная безопасность
- Масштабируемость
- Большое сообщество
- Регулярные обновления