Flask
Wizzie
Framework Flask został stworzony początkowo jako żart prima aprilisowy, który miał udowodnić, że można stworzyć framework zawierający się w jednym pliku. W przeciwieństwie do Django, Flask nie zapewnia żadnego szkieletu, ani podstawy dla tworzonej aplikacji. Framework nie ułatwia programiście pracy gotowymi, wbudowanymi komponentami, takimi jak ORM czy panel admina - w zamian środowisko oferuje duży zasób rozszerzeń i dodatków, które można przeglądać pod tym adresem.
Flask domyślnie jako języka szablonów używa Jinja2, wzorowanego na języku używanym w Django.
Oficjalna strona frameworku: http://flask.pocoo.org/
Dokumentacja wersji 1.0: http://flask.pocoo.org/docs/1.0/
Cechy
- Powstaje w oparciu o Werkzeug
- Twórcy deklarują 100% kompatybilność z WSGI 1.0;
- Jako microframework Flask zapewnia podstawową obsługę żądań HTTP (jak również HTTPS);
- Dodatkowe funkcjonalności wprowadzane są przez liczne rozszerzenia;
- Niski próg wejścia i dokumentacja oparta o przykłady pozwalają na szybką naukę frameworka;
- Dzięki nieskomplikowanej konfiguracji, prostocie i minimalizmowi możliwe jest błyskawiczne stworzenie małej aplikacji lub API;
Rozszerzenia
Możliwości Flaska można zwiększyć poprzez instalację dodatkowych rozszerzeń. Część wprowadza nowe funkcjonalności lub ułatwia korzystanie z istniejących (np. obsługa JSON Web Tokenów, budowa REST API), inne upraszczają integrację np. z SQLAlchemy czy PyMongo.
Typowym sposobem dodania rozszerzenia do aplikacji jest zaimportowanie głównej klasy rozszerzenia i utworzenie obiektu, do którego przekazywany jest obiekt aplikacji Flask:
import config
from flask import Flask
from flask_extension_module import FlaskExtensionClass
# Tworzymy obiekt aplikacji
app = Flask(__name__)
# Ładujemy konfigurację, w tym przypadku z config.py
app.config.from_object('config')
# Inicjalizujemy obiekt rozszerzenia
ext = FlaskExtensionClass(app)
Przydatne rozszerzenia Flaska
- ORM/ODM
- Flask-SQLAlchemy - upraszcza konfigurację i korzystanie z SQLAlchemy;
- Flask-PyMongo - podobnie jak Flask-SQLAlchemy, ale stworzony do współpracy z PyMongo;
- Autoryzacja
- Flask-Login - rozszerzenie do zarządzania sesjami użytkowników we Flasku;
- Flask-JWT-Extended - wprowadza autoryzację poprzez JSON Web Tokeny, zabezpieczenia przed CSRF, odświeżanie tokenów i inne;
- Flask-JWT-Simple - wersja Flask-JWT-Extended okrojona do podstawowej obsługi JWT;
- Aplikacja
- Flask-CORS obsługa Cross Origin Resource Sharing;
- Flask-RESTful - rozszerzenie wspierające tworzenie REST API we Flasku;
- Inne
- Flask-Migrate - rozszerzenie ułatwiające migracje bazy danych w oparciu narzędzie alembic;
- Flask-Admin - umożliwia wygenerowanie panelu administracyjnego dla aplikacji w oparciu o szablony;