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
  • 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;

0 komentarzy