Auf meinem lokalen Computer werden Python 2.5 und Nginx unter Ubuntu 8.10 ausgeführt, wobei Django aus dem neuesten Entwicklungs-Trunk erstellt wurde.
Für jede angeforderte URL wird Folgendes ausgegeben:
TemplateDoesNotExist unter / appname / path appname / template_name.html
Django hat versucht, diese Vorlagen in der folgenden Reihenfolge zu laden: * Verwenden des Loaders django.template.loaders.filesystem.function: * Verwenden des Loaders django.template.loaders.app_directories.function:
TEMPLATE_DIRS ('/usr/lib/python2.5/site-packages/projectname/templates',)
Sucht es in diesem Fall nach /usr/lib/python2.5/site-packages/projectname/templates/appname/template_name.html ? Das Seltsame ist, dass diese Datei auf der Festplatte vorhanden ist. Warum kann Django es nicht finden?
Ich führe dieselbe Anwendung auf einem Remote-Server mit Python 2.6 unter Ubuntu 9.04 ohne ein solches Problem aus. Andere Einstellungen sind gleich.
Ist auf meinem lokalen Computer etwas falsch konfiguriert, oder was könnte möglicherweise solche Fehler verursacht haben, die ich untersuchen sollte?
In meiner settings.py habe ich angegeben:
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'),
)
Es sollte nach folgenden Dateien suchen:
- /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
- ...
Alle oben genannten Dateien befinden sich auf der Festplatte.
Gelöst
Es funktioniert jetzt, nachdem ich versucht habe:
chown -R www-data:www-data /usr/lib/python2.5/site-packages/projectname/*
Es ist komisch. Ich muss dies nicht auf dem Remote-Server tun, damit es funktioniert.
