Câu trả lời:
Chạy ứng dụng trong chế độ phát triển sẽ hiển thị truy nguyên và bảng điều khiển tương tác trong trình duyệt khi có lỗi. Để chạy trong chế độ phát triển, hãy đặt FLASK_ENV=development
biến môi trường sau đó sử dụng flask run
lệnh (hãy nhớ trỏ FLASK_APP
đến ứng dụng của bạn).
Đối với Linux, Mac, Hệ thống con Linux cho Windows, Git Bash trên Windows, v.v.:
export FLASK_APP=myapp
export FLASK_ENV=development
flask run
Đối với Windows CMD, sử dụng set
thay vì xuất:
set FLASK_ENV=development
Đối với PowerShell, hãy sử dụng $env
:
$env:FLASK_ENV = "development"
Trước Flask 1.0, điều này đã được điều khiển bởi FLASK_DEBUG=1
biến môi trường.
Nếu bạn đang sử dụng app.run()
phương thức thay vì flask run
lệnh, hãy vượt qua debug=True
để bật chế độ gỡ lỗi.
Tracebacks cũng được in tới thiết bị đầu cuối chạy máy chủ, bất kể chế độ phát triển.
Nếu bạn đang sử dụng PyCharm, VS Code, v.v., bạn có thể tận dụng trình gỡ lỗi của nó để bước qua mã với các điểm dừng. Cấu hình chạy có thể trỏ đến một lệnh gọi tập lệnh app.run(debug=True, use_reloader=False)
hoặc trỏ nó vào venv/bin/flask
tập lệnh và sử dụng nó như bạn làm từ dòng lệnh. Bạn có thể để trình tải lại bị vô hiệu hóa, nhưng tải lại sẽ giết bối cảnh gỡ lỗi và bạn sẽ phải bắt lại điểm dừng.
Bạn cũng có thể sử dụng pdb, pudb hoặc trình gỡ lỗi thiết bị đầu cuối khác bằng cách gọi set_trace
trong chế độ xem bạn muốn bắt đầu gỡ lỗi.
Hãy chắc chắn không sử dụng quá rộng trừ các khối. Bao quanh tất cả mã của bạn với một cái bắt tất cả try... except...
sẽ làm im lặng lỗi bạn muốn gỡ lỗi. Nói chung, không cần thiết, vì Flask sẽ xử lý các trường hợp ngoại lệ bằng cách hiển thị trình gỡ lỗi hoặc lỗi 500 và in dấu vết lên bảng điều khiển.
Bạn có thể sử dụng app.run(debug=True)
để chỉnh sửa Trình gỡ lỗi Werkzeug như được đề cập dưới đây và tôi nên biết.
debug=True
bạn thực sự đang sử dụng trình gỡ lỗi Werkzeug, do đó, đây không phải là một hoặc hoặc ;-)
print 'xyz'
sẽ in ra bàn điều khiển. Nếu bạn muốn gỡ lỗi trong trình duyệt, bạn sẽ cần phải sửa lỗi về nơi bạn muốn gỡ lỗi. raise Exception('xyz')
. Điều này sẽ kích hoạt gỡ lỗi để đầu ra trong cửa sổ trình duyệt.
Từ 1.1.x
tài liệu này , bạn có thể kích hoạt chế độ gỡ lỗi bằng cách xuất một biến môi trường sang dấu nhắc shell của bạn:
export FLASK_APP=/daemon/api/views.py # path to app
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Người ta cũng có thể sử dụng tiện ích mở rộng Thanh công cụ gỡ lỗi Flask để có được thông tin chi tiết hơn được nhúng trong các trang được hiển thị.
from flask import Flask
from flask_debugtoolbar import DebugToolbarExtension
import logging
app = Flask(__name__)
app.debug = True
app.secret_key = 'development key'
toolbar = DebugToolbarExtension(app)
@app.route('/')
def index():
logging.warning("See this message in Flask Debug Toolbar!")
return "<html><body></body></html>"
Bắt đầu ứng dụng như sau:
FLASK_APP=main.py FLASK_DEBUG=1 flask run
Nếu bạn đang sử dụng Visual Studio Code, hãy thay thế
app.run(debug=True)
với
app.run()
Nó xuất hiện khi bật trình gỡ lỗi nội bộ sẽ vô hiệu hóa trình gỡ lỗi VS Code.
Nếu bạn muốn gỡ lỗi ứng dụng bình của mình thì chỉ cần vào thư mục chứa ứng dụng bình. Đừng quên kích hoạt môi trường ảo của bạn và dán các dòng trong bảng điều khiển thay đổi "tên chính" vào tệp chính của bình.
export FLASK_APP="mainfilename.py"
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Sau khi bạn bật trình gỡ lỗi cho ứng dụng bình, hầu hết mọi lỗi sẽ được in trên bảng điều khiển hoặc trên cửa sổ trình duyệt. Nếu bạn muốn tìm hiểu điều gì đang xảy ra, bạn có thể sử dụng các câu lệnh in đơn giản hoặc bạn cũng có thể sử dụng console.log () cho mã javascript.
Cài đặt python-dotenv
trong môi trường ảo của bạn.
Tạo một .flaskenv trong thư mục gốc của dự án của bạn. Theo gốc dự án, ý tôi là thư mục chứa tệp app.txt của bạn
Bên trong tập tin này viết như sau:
FLASK_APP=myapp
FLASK_ENV=development
Bây giờ ban hành lệnh sau:
flask run
Mẹo nhanh - nếu bạn sử dụng PyCharm, hãy truy cập Edit Configurations
=> Configurations
và bật FLASK_DEBUG
hộp kiểm, khởi động lại Run
.
app.run()
(có thể gỡ lỗi hoặc tắt). Flask hoạt động giống như bất kỳ ứng dụng python nào khác, vì vậy bạn có thể gỡ lỗi nó giống như cách bạn gỡ lỗi bất kỳ ứng dụng Python nào. Nếu bạn muốn sử dụng đăng nhập, sử dụng đăng nhập. Nếu bạn muốn in, sử dụng bản in. Bạn thậm chí có thể sử dụng một trình gỡ lỗi nếu bạn muốn.