Theo mặc định, khi chạy ứng dụng Flask bằng máy chủ tích hợp ( Flask.run
), nó sẽ giám sát các tệp Python của nó và tự động tải lại ứng dụng nếu mã của nó thay đổi:
* Detected change in '/home/xion/hello-world/app.py', reloading
* Restarting with reloader
Thật không may, điều này dường như chỉ hoạt động với các tệp * .py và dường như tôi không tìm thấy bất kỳ cách nào để mở rộng chức năng này cho các tệp khác. Đáng chú ý nhất, sẽ cực kỳ hữu ích nếu Flask khởi động lại ứng dụng khi một mẫu thay đổi. Tôi đã không còn đếm được bao nhiêu lần tôi loay hoay với việc đánh dấu trong các mẫu và bối rối khi không thấy bất kỳ thay đổi nào, chỉ khi phát hiện ra rằng ứng dụng vẫn đang sử dụng phiên bản cũ của mẫu Jinja.
Vì vậy, có cách nào để có các tệp giám sát Flask trong thư mục mẫu , hay nó yêu cầu tìm hiểu sâu về nguồn của khung công tác?
Chỉnh sửa : Tôi đang sử dụng Ubuntu 10.10. Thực sự chưa thử điều đó trên bất kỳ nền tảng nào khác.
Sau khi tìm hiểu thêm, tôi đã phát hiện ra rằng các thay đổi trong mẫu thực sự được cập nhật theo thời gian thực mà không cần tải lại ứng dụng. Tuy nhiên, điều này dường như chỉ áp dụng cho những mẫu được chuyển đến flask.render_template
.
Nhưng điều đó xảy ra là trong ứng dụng của tôi, tôi có khá nhiều thành phần có thể tái sử dụng, được tham số hóa mà tôi sử dụng trong các mẫu Jinja. Chúng được triển khai dưới dạng {% macro %}
s, nằm trong "mô-đun" chuyên dụng và được chỉnh sửa {% import %}
thành các trang thực tế. Tất cả đều đẹp và KHÔ ... ngoại trừ việc các mẫu đã nhập đó dường như không bao giờ được kiểm tra để sửa đổi, vì chúng hoàn toàn không được thông qua render_template
.
(Thật kỳ lạ, điều này không xảy ra đối với các mẫu được gọi qua {% extends %}
. Về phần {% include %}
, tôi không biết vì tôi không thực sự sử dụng chúng.)
Vì vậy, để tóm lại, gốc rễ của hiện tượng này dường như nằm ở đâu đó giữa Jinja và Flask hoặc Werkzeug. Tôi đoán nó có thể đảm bảo một chuyến đi đến trình theo dõi lỗi cho một trong hai dự án đó :) Trong khi đó, tôi đã chấp nhận jd. Câu trả lời là vì đó là giải pháp mà tôi thực sự đã sử dụng - và nó hoạt động như một sự quyến rũ.