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.
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ể.
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 đặtdev
để 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 deployDATABASE
là nơi đường dẫn file database SQLite sẽ được lưu. Nó nằm dưới app.instance_path
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 fileconfig.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