Mesin lokal saya menjalankan Python 2.5 dan Nginx di Ubuntu 8.10, dengan Django dibangun dari trunk pengembangan terbaru.
Untuk setiap URL yang saya minta, ia melempar:
TemplateDoesNotExist di / appname / path appname / template_name.html
Django mencoba memuat template ini, dalam urutan ini: * Menggunakan loader django.template.loaders.filesystem.function: * Menggunakan loader django.template.loaders.app_directories.function:
TEMPLATE_DIRS ('/usr/lib/python2.5/site-packages/projectname/templates',)
Apakah ia mencari /usr/lib/python2.5/site-packages/projectname/templates/appname/template_name.html dalam kasus ini? Yang aneh adalah file ini memang ada di disk. Mengapa Django tidak dapat menemukannya?
Saya menjalankan aplikasi yang sama di server jauh dengan Python 2.6 di Ubuntu 9.04 tanpa masalah seperti itu. Pengaturan lainnya sama.
Apakah ada sesuatu yang salah konfigurasi pada mesin lokal saya, atau apa yang mungkin menyebabkan kesalahan seperti yang harus saya perhatikan?
Di settings.py saya , saya telah menentukan:
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'),
)
Itu harus mencari file-file berikut:
- /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
- ...
Semua file di atas ada di disk.
Terpecahkan
Ini berfungsi sekarang setelah saya mencoba:
chown -R www-data:www-data /usr/lib/python2.5/site-packages/projectname/*
Ini aneh. Saya tidak perlu melakukan ini di server jauh untuk membuatnya bekerja.