Flask - Blueprints

WHAT

Blueprints - Bản thiết kế - là concept trong Flask, dùng để chia nhỏ ứng dụng thành các components và support các common patterns.

Một blueprints hoạt động giống với 1 Flask application object, nhưng nó không thực sự là 1 application.

Chính xác thì nó là: bản thiết kế làm sao để cấu trúc và mở rộng 1 application.

WHY

  1. Là nhân tố cấu thành lên 1 application. Một project được tạo nên từ: Application object, several extensions, và register a collection of blueprints.
  2. Register blueprints với application được ở 1 URL prefix hoặc là subdomain. Parameters in URL prefix/subdomain sẽ trở thành view arguments luôn.
  3. Có thể register nhiều lần trong application, với URL rules khác nhau.

HOW

Khai báo 1 blueprint, define name, url prefix nếu cần. Register vào application với command app.register_blueprint(XXX.bp).

Ta có thể register 1 blueprint này vào 1 blueprint khác (nesting blueprints.)

Blueprint Resources

  1. Resource folder: single_page.root_path.
  2. Static files: admin = Blueprint('admin', __name__, static_folder='static')
  3. Template folder: Use options template_folder='template' khi khởi tạo.
  4. url building: url_for('admin.index')
  5. Error handlers: @simple_page.errorhandler(404)

Notes

  • Application Object: Center object của Flask application. (Flask(__name__)). Nhiệm vụ handle incoming request, routing them tới view functions, return response.

  • Extensions: Các package riêng lẻ có thể cài và integrate với Flask. Vd: Flask-SQLAlchemy. Flask làm theo kiểu modular design nên rất dễ để add extra functionality.

  • Blueprints: Way to organize related views and other code into separated modules. Một application to có thể chia thành nhiều blueprints nhỏ, trong đó bao gồm cả routes, views, templates, … Sau đó có thể register blueprints này với application object, making those routes available.