คุณต้องสร้างไฟล์เทมเพลตของคุณในตำแหน่งที่ถูกต้อง ในtemplatesไดเร็กทอรีย่อยถัดจากโมดูล python ของคุณ
ข้อผิดพลาดระบุว่าไม่มีhome.htmlไฟล์ในtemplates/ไดเร็กทอรี ตรวจสอบให้แน่ใจว่าคุณได้สร้างไดเร็กทอรีนั้นในไดเร็กทอรีเดียวกับโมดูล python ของคุณและคุณได้ใส่home.htmlไฟล์ในไดเร็กทอรีย่อยนั้น หากแอปของคุณเป็นแพ็กเกจควรสร้างโฟลเดอร์เทมเพลตภายในแพ็กเกจ
myproject/
app.py
templates/
home.html
myproject/
mypackage/
__init__.py
templates/
home.html
หรือหากคุณตั้งชื่อโฟลเดอร์เทมเพลตเป็นอย่างอื่นtemplatesและไม่ต้องการเปลี่ยนชื่อเป็นค่าเริ่มต้นคุณสามารถบอกให้ Flask ใช้ไดเร็กทอรีอื่นนั้นได้
app = Flask(__name__, template_folder='template')
คุณสามารถขอขวดที่จะอธิบายถึงวิธีการที่จะพยายามที่จะหาแม่แบบที่กำหนดโดยการตั้งค่าEXPLAIN_TEMPLATE_LOADINGตัวเลือกTrueที่จะ ทุกเทมเพลตโหลดคุณจะได้รับรายงานที่บันทึกลงในขวดapp.loggerINFOที่ระดับ
นี่คือสิ่งที่ดูเหมือนว่าเมื่อการค้นหาประสบความสำเร็จ ในตัวอย่างนี้foo/bar.htmlเทมเพลตขยายbase.htmlเทมเพลตดังนั้นจึงมีการค้นหาสองครั้ง:
[2019-06-15 16:03:39,197] INFO in debughelpers: Locating template "foo/bar.html":
1: trying loader of application "flaskpackagename"
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /.../project/flaskpackagename/templates
-> found ('/.../project/flaskpackagename/templates/foo/bar.html')
[2019-06-15 16:03:39,203] INFO in debughelpers: Locating template "base.html":
1: trying loader of application "flaskpackagename"
class: jinja2.loaders.FileSystemLoader
encoding: 'utf-8'
followlinks: False
searchpath:
- /.../project/flaskpackagename/templates
-> found ('/.../project/flaskpackagename/templates/base.html')
พิมพ์เขียวสามารถลงทะเบียนไดเร็กทอรีเทมเพลตของตนเองได้เช่นกัน แต่นี่ไม่ใช่ข้อกำหนดหากคุณใช้พิมพ์เขียวเพื่อให้ง่ายต่อการแยกโปรเจ็กต์ขนาดใหญ่ข้ามหน่วยตรรกะ ไดเรกทอรีเทมเพลตหลักของแอป Flask จะถูกค้นหาก่อนเสมอแม้ว่าจะใช้เส้นทางเพิ่มเติมต่อพิมพ์เขียวก็ตาม
./Templates/index.htmlได้ แต่เมื่อฉันปรับใช้กับ heroku (คิดว่ามันเป็น Python เดียวกันเวอร์ชันไลบรารีเดียวกันรวมถึงรุ่น Flask เดียวกัน แต่ heroku เป็น Unix); และโยนTemplateNotFoundข้อผิดพลาด หลังจากที่ฉันเปลี่ยนชื่อโฟลเดอร์git mv Templates/index.html templates/index.htmlทั้งเวอร์ชันในเครื่อง (Windows) และเวอร์ชัน heroku (Unix) ใช้งานได้