+2

#2 Cài đặt ứng dụng Flask

Aplication setup

Một ứng dụng Flask là một instance (thể hiện) của class Flask. Mọi thứ về ứng dụng, như cấu hình urls, database,... sẽ được đăng ký với class này.

Cách đơn giản để tạo một ứng dụng Flask là tạo một global Flask instance ngay đầu tiên của file code của bạn. như "Hello, World!" đã được ví dụ ở trang trước. Mặc dù điều này đơn giản và hữu ít trong một số trường hợp, nhưng nó cũng gây ra một số vấn đề phức tạp khi dự án phát triển.

Thay vì tạo một instance Flask global, bạn sẽ tạo nó vào trong một fucntion. Chức nằng này gọi là application factory. Mỗi configuation, registration và thiết lập các của ứng dụng cần xảy ra bên trong, sau đó ứng dụng sẽ được return.

The application factory

Thôi, bắt đầu code thôi. Tạo thư mục flaskr và and file __init__.py. Nó sẽ chứa application factory và nó cho Python biết rằng thư mục flaskr là một gọi package.

$ mkdir flaskr

flaskr/__init__.py

import os

from flask import Flask


def create_app(test_config=None):
    # create and configure the app
    app = Flask(__name__, instance_relative_config=True)
    app.config.from_mapping(
        SECRET_KEY='dev',
        DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
    )

    if test_config is None:
        # load the instance config, if it exists, when not testing
        app.config.from_pyfile('config.py', silent=True)
    else:
        # load the test config if passed in
        app.config.from_mapping(test_config)

    # ensure the instance folder exists
    try:
        os.makedirs(app.instance_path)
    except OSError:
        pass

    # a simple page that says hello
    @app.route('/hello')
    def hello():
        return 'Hello, World!'

    return app

create_app là một chức năng của application factory.

  1. app = Flask(__name__, instance_relative_config=True) tạo thực thể Flask
    • __name__ là tên của module Python hiện tại. Ứng dụng cần biết vị trí để thiết lập đường dẫn. Và __name__là một cách thuận tiện để thực hiện điều đó.
    • instance_relative_config=True cho ứng dụng biết rằng cấu hình của file liên quan đến thư mục thực thể.
  2. app.config.from_mapping() đặt một số cấu hình mặc định mà ứng dụng sẽ sử dụng:
    • SECRET_KEY được Flask và các tiện ích mở rộng để giữ dữ liệu được an toàn. Nó được đặt dev để cung cấp giá trị dễ dàng trong suốt quá trình phát triển, nhưng nó sẽ cập nhật lại giá tri deploy
    • DATABASE là nơi đường dẫn file database SQLite sẽ được lưu. Nó nằm dưới app.instance_path
  3. app.config.from_pyfile() nó sẽ thực hiện ghi đè lại các cấu hình mặc định với các giá trị có trong file config.py bên trong file instance nếu nó tồn tại. Ví dụ khi triển khai dự án thì nó sẽ được sử dụng giá trị SECRET_KEY thực.

Run the application

Nào, ngay bây giờ bạn có thể chạy ứng dụng sử dụng command flask. Từ termianl, cho Flask biết nơi ứng dụng của bạn, sua đó chạy nó trong debug mode. Hãy nhớ, bạn đang ở vị trí flask-tutorial chứ không phải ở package flaksr

Debug mode hiển thị trình gỡ lỗi. khi mà người dùng tương tác trên một page và đưa ra ngoại lệ và khởi động lại máy chủ bất cứ khi nào bạn thay đổi code. Bạn có thể để nó chạy và chỉ cần tải lại trang trình duyệt khi làm theo hướng dẫn

$ flask --app flaskr run --debug

Bạn nhìn thấy đầu ra tương tự như bên dưới:

* Serving Flask app "flaskr"
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: nnn-nnn-nnn

Hãy truy cập http://127.0.0.1:5000/hello


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.