Na mojej lokalnej maszynie działa Python 2.5 i Nginx na Ubuntu 8.10, z Django zbudowanym z najnowszego pnia rozwojowego.
Dla każdego żądanego adresu URL generuje:
TemplateDoesNotExist w / nazwa_aplikacji / ścieżka nazwa_aplikacji / nazwa_szablonu.html
Django próbował załadować te szablony w następującej kolejności: * Używając programu ładującego django.template.loaders.filesystem.function: * Używając programu ładującego django.template.loaders.app_directories.function:
TEMPLATE_DIRS ('/usr/lib/python2.5/site-packages/projectname/templates',)
Czy w tym przypadku szuka /usr/lib/python2.5/site-packages/projectname/templates/appname/template_name.html ? Dziwne jest to, że ten plik istnieje na dysku. Dlaczego Django nie może go zlokalizować?
Uruchamiam tę samą aplikację na zdalnym serwerze z Pythonem 2.6 na Ubuntu 9.04 bez takiego problemu. Pozostałe ustawienia są takie same.
Czy jest coś źle skonfigurowanego na moim komputerze lokalnym lub co mogło spowodować takie błędy, które powinienem sprawdzić?
W moim settings.py określiłem:
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'),
)
Powinien szukać następujących plików:
- /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
- ...
Wszystkie powyższe pliki znajdują się na dysku.
Rozwiązany
Działa teraz, gdy spróbowałem:
chown -R www-data:www-data /usr/lib/python2.5/site-packages/projectname/*
To dziwne. Nie muszę tego robić na serwerze zdalnym, żeby to działało.