เครื่องในพื้นที่ของฉันใช้ Python 2.5 และ Nginx บน Ubuntu 8.10 โดย Django ถูกสร้างขึ้นจากการพัฒนาล่าสุด
สำหรับทุก URL ที่ฉันขอมันจะโยน:
TemplateDoesNotExist ที่ / appname / path appname / template_name.html
Django พยายามโหลดเทมเพลตเหล่านี้ตามลำดับนี้: * การใช้โหลดเดอร์ django.template.loaders.filesystem.function: * ใช้โหลดเดอร์ django.template.loaders.app_directories.function:
TEMPLATE_DIRS ('/usr/lib/python2.5/site-packages/projectname/templates',)
มันกำลังมองหา/usr/lib/python2.5/site-packages/projectname/templates/appname/template_name.htmlในกรณีนี้หรือไม่ สิ่งที่แปลกคือไฟล์นี้มีอยู่ในดิสก์ ทำไม Django ถึงหาไม่เจอ?
ฉันเรียกใช้แอปพลิเคชันเดียวกันบนเซิร์ฟเวอร์ระยะไกลด้วย Python 2.6 บน Ubuntu 9.04 โดยไม่มีปัญหาดังกล่าว การตั้งค่าอื่น ๆ เหมือนกัน
มีสิ่งใดที่กำหนดค่าผิดพลาดในเครื่องของฉันหรือสิ่งที่อาจทำให้เกิดข้อผิดพลาดที่ฉันควรพิจารณา
ในsettings.pyของฉันฉันได้ระบุ:
SETTINGS_PATH = os.path.normpath(os.path.dirname(__file__))
# Find templates in the same folder as settings.py.
TEMPLATE_DIRS = (
os.path.join(SETTINGS_PATH, 'templates'),
)
มันควรจะมองหาไฟล์ต่อไปนี้:
- /usr/lib/python2.5/site-packages/projectname/templates/appname1/template1.html
- /usr/lib/python2.5/site-packages/projectname/templates/appname1/template2.html
- /usr/lib/python2.5/site-packages/projectname/templates/appname2/template3.html
- ...
ไฟล์ทั้งหมดข้างต้นมีอยู่บนดิสก์
แก้ไข
ตอนนี้ทำงานหลังจากที่ฉันลอง:
chown -R www-data:www-data /usr/lib/python2.5/site-packages/projectname/*
มันแปลก ฉันไม่จำเป็นต้องทำสิ่งนี้บนรีโมตเซิร์ฟเวอร์เพื่อให้ทำงานได้