โดยค่าเริ่มต้นเมื่อเรียกใช้แอปพลิเคชัน Flask โดยใช้เซิร์ฟเวอร์ในตัว ( Flask.run
) จะตรวจสอบไฟล์ Python และโหลดแอปซ้ำโดยอัตโนมัติหากรหัสเปลี่ยนแปลง:
* Detected change in '/home/xion/hello-world/app.py', reloading
* Restarting with reloader
น่าเสียดายที่ดูเหมือนว่าจะใช้ได้กับไฟล์* .pyเท่านั้นและดูเหมือนว่าฉันจะไม่พบวิธีใดในการขยายฟังก์ชันนี้ไปยังไฟล์อื่น ๆ ที่สำคัญที่สุดคือการให้ Flask รีสตาร์ทแอปเมื่อเทมเพลตเปลี่ยนไปจะมีประโยชน์อย่างยิ่ง ฉันนับไม่ได้ว่ากี่ครั้งแล้วที่ฉันเล่นซอกับมาร์กอัปในเทมเพลตและสับสนโดยไม่เห็นการเปลี่ยนแปลงใด ๆ เพียงเพื่อจะพบว่าแอปยังคงใช้เทมเพลต Jinja เวอร์ชันเก่าอยู่
ดังนั้นมีวิธีใดบ้างที่จะมีไฟล์มอนิเตอร์ Flask ในไดเร็กทอรีtemplateหรือไม่หรือต้องดำน้ำในซอร์สของเฟรมเวิร์ก
แก้ไข : ฉันใช้ Ubuntu 10.10 ยังไม่ได้ลองใช้บนแพลตฟอร์มอื่นจริงๆ
หลังจากสอบถามเพิ่มเติมฉันพบว่าการเปลี่ยนแปลงในเทมเพลตได้รับการอัปเดตตามเวลาจริงโดยไม่ต้องโหลดแอปซ้ำ อย่างไรก็ตามดูเหมือนว่าจะใช้กับเทมเพลตที่ส่งผ่านไปflask.render_template
เท่านั้น
แต่มันก็เกิดขึ้นที่ในแอพของฉันฉันมีส่วนประกอบที่ใช้ซ้ำได้จำนวนมากซึ่งฉันใช้ในเทมเพลต Jinja มีการใช้งานเป็น{% macro %}
s โดยอาศัยอยู่ใน "โมดูล" เฉพาะและได้รับการ{% import %}
แก้ไขในหน้าเว็บจริง ทุกอย่างดูดีและแห้ง ... ยกเว้นว่าแม่แบบที่นำเข้าเหล่านั้นไม่เคยตรวจสอบการแก้ไขเนื่องจากไม่ผ่านrender_template
เลย
(อยากรู้อยากเห็นสิ่งนี้ไม่เกิดขึ้นกับเทมเพลตที่เรียกผ่าน{% extends %}
ส่วน{% include %}
ฉันไม่รู้เพราะฉันไม่ได้ใช้มันจริงๆ)
ดังนั้นเพื่อสรุปรากเหง้าของปรากฏการณ์นี้ดูเหมือนจะอยู่ที่ไหนสักแห่งระหว่าง Jinja และ Flask หรือ Werkzeug ฉันเดาว่าอาจรับประกันการเดินทางไปยังตัวติดตามข้อผิดพลาดสำหรับโครงการเหล่านั้น :) ในขณะเดียวกันฉันยอมรับjd คำตอบเพราะนั่นเป็นวิธีแก้ปัญหาที่ฉันใช้จริง - และมันก็ใช้ได้เหมือนมีเสน่ห์