Definicja #
Flask to lekki mikro-framework języka Python do tworzenia aplikacji webowych, stworzony przez Armina Ronachera. Pierwsza wersja ukazała się w 2010 roku jako żart primaaprilisowy, który szybko stał się jednym z najpopularniejszych frameworków webowych w Pythonie.
Flask celowo pozostaje minimalny — dostarcza tylko podstawowe elementy:
- Routing — dekorator
@app.route()mapujący ścieżki URL na funkcje (view functions) - Request/Response — obiekty
request(dane wejściowe) iResponse(odpowiedź HTTP) - Jinja2 — wbudowany silnik szablonów HTML (opcjonalny przy REST API)
- WSGI — wsparcie dla standardu Web Server Gateway Interface; współpracuje z Gunicornem, uWSGI
- Blueprints — mechanizm organizacji kodu w moduły (dla większych aplikacji)
Kluczowa różnica względem Django:
- Django jest "kompletny" — zawiera ORM, panel admina, uwierzytelnianie, formularze i wiele więcej w pudełku. Narzuca strukturę projektu.
- Flask jest mikro-frameworkiem — dostarcza tylko podstawy, resztę (ORM, autentykacja, walidacja) programista dobiera sam z ekosystemu Pythona.
Popularne rozszerzenia Flask (extensions): Flask-SQLAlchemy (ORM), Flask-Login (autentykacja), Flask-Migrate (migracje Alembic), Flask-RESTful / Flask-RESTX (budowanie REST API), Marshmallow (serializacja/walidacja).
Zastosowania #
Flask stosuje się do:
- Budowania REST API i mikroserwisów — minimalny overhead, łatwa konteneryzacja w Dockerze; popularny w projektach Data Science jako warstwa API dla modeli ML
- Szybkiego prototypowania aplikacji webowych — mniej konfiguracji niż Django, szybszy start projektu
- Małych i średnich serwisów webowych — blogi, serwisy z prostą logiką biznesową, gdzie Django byłoby przerostem
- Ekspozycji modeli Machine Learning przez API — Flask + scikit-learn/PyTorch jako endpoint dla predykcji ML
- Narzędzi wewnętrznych i dashboardów — proste aplikacje webowe dla zespołów analitycznych lub DevOps
Ścieżka nauki #
Flask jest popularnym wyborem dla programistów Pythona uczących się tworzenia aplikacji webowych — ma niski próg wejścia i świetną dokumentację.
Zacznij od:
- Instalacja i pierwsza aplikacja:
pip install flask, prosta funkcja zwracająca "Hello World" - Routing:
@app.route(), metody HTTP (methods=['GET', 'POST']), zmienne w ścieżce URL - Request i Response:
request.json,request.args,jsonify() - Blueprints: podział aplikacji na moduły
- Pierwsza aplikacja REST API: CRUD dla prostego zasobu
Następnie dodaj wybrane rozszerzenia:
- Flask-SQLAlchemy — ORM (SQLAlchemy) zintegrowany z Flask
- Flask-Migrate — migracje schematu bazy danych (Alembic)
- Marshmallow lub Pydantic — walidacja i serializacja danych
- Deployment: Gunicorn + Nginx, Docker, Heroku, Azure App Service
- Porównaj z FastAPI — nowoczesną alternatywą dla Flask z async, type hints i automatycznym Swaggerem
FAQ #
- Czym różni się Flask od Django?
- Django to 'batteries-included' framework — dostarcza ORM, panel admina, uwierzytelnianie i wiele więcej w jednym pakiecie, narzucając strukturę projektu. Flask to mikro-framework — daje tylko podstawy (routing, request/response), resztę programista dobiera sam. Flask ma niższy próg wejścia i większą elastyczność; Django jest lepszy dla dużych aplikacji z wieloma wbudowanymi funkcjami.
- Czy Flask nadaje się do produkcji?
- Tak — Flask jest używany w produkcji przez duże firmy (Pinterest, LinkedIn używały Flask). Kluczowe jest użycie produkcyjnego serwera WSGI (Gunicorn, uWSGI) zamiast wbudowanego serwera deweloperskiego Flask, który nie jest przeznaczony do użytku produkcyjnego.
- Czym jest FastAPI w porównaniu do Flask?
- FastAPI to nowoczesna alternatywa dla Flask do budowania REST API w Pythonie. Oferuje natywne wsparcie dla async/await, automatyczną walidację przez Pydantic, wbudowany Swagger UI i typowanie. FastAPI jest szybszy i nowocześniejszy; Flask jest bardziej dojrzały i ma większy ekosystem rozszerzeń.
- Ile zarabia Python Developer znający Flask?
- Python Developer (backend) zarabia w Polsce od 10 000 do 20 000 zł brutto. Flask sam w sobie nie jest decydującym czynnikiem — ważniejsze są ogólne umiejętności Pythona, znajomość baz danych i architektury mikroserwisów. W Data Science Flask jest popularnym narzędziem do ekspozycji modeli ML.