За что нравится Flask, так это за его концепцию reusable apps. По сравнению с Django на создание по настоящему реюзабельного приложения уходит КУДА меньше времени.
Вот, например, вчера вечером захотелось поиграться с Dropbox API, а сегодня уже готов Flask-Dropbox
:) Причем готов с тестовым проектом, который позволит вам загружать файлы в Dropbox, просматривать их и удалять.
Пример использования как всегда прост и неказист: импортируем главный класс и блюпринт, инициализируем их, регистрируем блюпринт с указанием префикса для урлов:
from flask import Flask
from flask.ext.dropbox import Dropbox, DropboxBlueprint
import settings
app = Flask(__name__)
app.config.from_object(settings)
dropbox = Dropbox(app)
dropbox_blueprint = DropboxBlueprint(dropbox)
app.register_blueprint(dropbox_blueprint, url_prefix='/dropbox')
Единственное на чем следует детально остановится - это настройки. Так как мы имеем дело с API, без них никуда :)
Во-первых, обязательно нужно будет настроить app.secret_key
или просто SECRET_KEY
, чтобы иметь возможность использовать flask.session
(там будут храниться нужные нам токены).
Во-вторых, нужно будет создать какое-то приложение в Dropbox developers site, если еще нет такого и получить там DROPBOX_KEY
, DROPBOX_SECRET
и DROPBOX_ACCESS_TYPE
. Без указания этих значений - кина не будет и Dropbox(app)
отдаст вам ValueError
:)
После укзания настроек все просто :)
Аутентификация. dropbox.is_authenticated
проверит нет ли валидного access token'а в текущей сессии, dropbox.login_url
сгенерирует урл для логина при помощи Dropbox, и наконец dropbox.logout_url
отдаст урл, переход по которому вылогинит дропбокс пользователя. После успешного логина получить данные о пользователе можно из словаря dropbox.account_info
.
Работа с дропбоксом. После того, как пользователь залогинился вся работа с его дропбоксом будет проходить через проперти dropbox.client
, который является прокси к инициализированному инстансу DropboxClient
. Полный список доступных методов последнего доступен в документации.
В остальном код доступен на ГитХабе, установить можно с PyPI. Пользуйтесь!