Ma machine locale exécute Python 2.5 et Nginx sur Ubuntu 8.10, avec Django construit à partir du dernier tronc de développement.
Pour chaque URL que je demande, il jette:
TemplateDoesNotExist at / appname / path appname / template_name.html
Django a essayé de charger ces modèles, dans cet ordre: * Utilisation du loader django.template.loaders.filesystem.function: * Utilisation du loader django.template.loaders.app_directories.function:
TEMPLATE_DIRS ('/usr/lib/python2.5/site-packages/projectname/templates',)
Cherche- t-il /usr/lib/python2.5/site-packages/projectname/templates/appname/template_name.html dans ce cas? La chose étrange est que ce fichier existait sur le disque. Pourquoi Django ne peut-il pas le localiser?
Je lance la même application sur un serveur distant avec Python 2.6 sur Ubuntu 9.04 sans un tel problème. Les autres paramètres sont identiques.
Y a-t-il quelque chose de mal configuré sur ma machine locale, ou qu'est-ce qui aurait pu causer de telles erreurs que je devrais examiner?
Dans mon settings.py , j'ai spécifié:
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'),
)
Il devrait rechercher les fichiers suivants:
- /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
- ...
Tous les fichiers ci-dessus existent sur le disque.
Résolu
Cela fonctionne maintenant après avoir essayé:
chown -R www-data:www-data /usr/lib/python2.5/site-packages/projectname/*
C'est étrange. Je n'ai pas besoin de faire cela sur le serveur distant pour que cela fonctionne.