Hej! Many threads here had the same caption, but none of them solved my problem. I have a Django site an can access /admin (but it looks ugly). But on / there appears the following error page (DEBUG = True in settings.py):
TemplateDoesNotExist at /
index.html
Request Method: GET
Request URL: http://iecl.uni-potsdam.de/
Django Version: 1.4.5
Exception Type: TemplateDoesNotExist
Exception Value:
index.html
Exception Location: /usr/lib/python2.7/dist-packages/django/template/loader.py in find_template, line 138
Python Executable: /usr/bin/python
Python Version: 2.7.3
Python Path:
['/home/python/iecl/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg',
'/home/python/iecl/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/pymodules/python2.7',
'/home/python/iecl/lib/python2.7/site-packages',
'/home/django/django']
Server time: Mon, 7 Apr 2014 11:28:46 +0200
Template-loader postmortem
Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
/home/django/django/templates/iecl_dev/index.html (File does not exist)
Using loader django.template.loaders.app_directories.Loader:
/usr/lib/python2.7/dist-packages/django/contrib/auth/templates/index.html (File does not exist)
/usr/lib/python2.7/dist-packages/django/contrib/admin/templates/index.html (File does not exist)
In fact, the file /home/django/django/templates/iecl_dev/index.html does exist and I also tried chmod o+r index.html without success.
The output of python iecl_dev/manage.py runserver 0.0.0.0:0 is
Validating models... 0 errors found Django version 1.4.5, using settings 'iecl_dev.settings' Development server is running at http://0.0.0.0:0/ Quit the server with CONTROL-C.
so everything seems fine here.
What perplexes me: The *.pyc files are created automatically when *.py files are run, right? After python iecl_dev/manage.py runserver 0.0.0.0:0 there is a file /home/django/django/iecl_dev/settings.pyc created. But it is not created, when I load the page in my web browser. Does that mean, the settings.py is never loaded? And how can Django say, a file, which exists, would not exist?
Edit¹:
My settings.py looks as follows:
import django.conf.global_settings as DEFAULT_SETTINGS
import os
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
)
SETTINGS_PATH = os.path.realpath(os.path.dirname(__file__))
MANAGERS = ADMINS
DATABASES = { $
'default': { $
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'iecl', # Or path to database file if using sqlite3.
'USER': 'iecl', # Not used with sqlite3.
'PASSWORD': '<xxx>', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3. $
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
TIME_ZONE = 'Europe/Berlin'
LANGUAGE_CODE = 'en-us'
SITE_ID = 1
USE_I18N = True
MEDIA_ROOT = '/var/www/django_media/iecl_dev/media/'
MEDIA_URL = ''
ADMIN_MEDIA_PREFIX = '/media/admin_media/'
SECRET_KEY = '<xxx>'
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
MIDDLEWARE_CLASSES = (
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
ROOT_URLCONF = 'iecl_dev.urls'
TEMPLATE_DIRS = (
os.path.join(SETTINGS_PATH, 'templates'),
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'iecl_dev.showStudents',
'django.contrib.admin',
)
TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
)
Edit²:
The contents of `/home/django/django/` are as follows: /home/django/django/: iecl2 iecl_dev templates /home/django/django/iecl2: __init__.py __init__.pyc manage.py settings.py settings.pyc showStudents urls.py urls.pyc /home/django/django/iecl2/showStudents: __init__.py __init__.pyc admin.py context_processors.py models.py models.pyc views.py views.pyc /home/django/django/iecl_dev: __init__.py __init__.pyc manage.py piwik settings.py settings.pyc showStudents urls.py urls.pyc /home/django/django/iecl_dev/piwik: __init__.py app_settings.py context_processors.py models.py tests.py urls.py views.py /home/django/django/iecl_dev/showStudents: __init__.py __init__.pyc admin.py context_processors.py models.py models.pyc views.py /home/django/django/templates: iecl iecl_dev /home/django/django/templates/iecl: 500.html admin changePW.html editStudent.html feedback.html feedback_thanks.html index.html location.html login.html page.html password_changed.html showStudent.html studentsOverview.html /home/django/django/templates/iecl/admin: 404.html 500.html actions.html app_index.html auth base.html base_site.html change_form.html change_list.html change_list_results.html date_hierarchy.html delete_confirmation.html delete_selected_confirmation.html edit_inline filter.html includes index.html invalid_setup.html login.html object_history.html pagination.html prepopulated_fields_js.html search_form.html showStudents submit_line.html /home/django/django/templates/iecl/admin/auth: user /home/django/django/templates/iecl/admin/auth/user: add_form.html change_password.html /home/django/django/templates/iecl/admin/edit_inline: stacked.html tabular.html /home/django/django/templates/iecl/admin/includes: fieldset.html /home/django/django/templates/iecl/admin/showStudents: pagecontent userpagecontent /home/django/django/templates/iecl/admin/showStudents/pagecontent: change_form.html /home/django/django/templates/iecl/admin/showStudents/userpagecontent: change_form.html /home/django/django/templates/iecl_dev: 500.html __init__.py admin changePW.html editStudent.html feedback.html feedback_thanks.html index.html location.html login.html page.html password_changed.html piwik showStudent.html studentsOverview.html /home/django/django/templates/iecl_dev/admin: 404.html 500.html actions.html app_index.html auth base.html base_site.html change_form.html change_list.html change_list_results.html date_hierarchy.html delete_confirmation.html delete_selected_confirmation.html edit_inline filter.html includes index.html invalid_setup.html login.html object_history.html pagination.html prepopulated_fields_js.html search_form.html showStudents submit_line.html /home/django/django/templates/iecl_dev/admin/auth: user /home/django/django/templates/iecl_dev/admin/auth/user: add_form.html change_password.html /home/django/django/templates/iecl_dev/admin/edit_inline: stacked.html tabular.html /home/django/django/templates/iecl_dev/admin/includes: fieldset.html /home/django/django/templates/iecl_dev/admin/showStudents: pagecontent userpagecontent /home/django/django/templates/iecl_dev/admin/showStudents/pagecontent: change_form.html /home/django/django/templates/iecl_dev/admin/showStudents/userpagecontent: change_form.html /home/django/django/templates/iecl_dev/piwik: tracking.html
Edit³:
Ok. This is solved for me now. The solution was a conglomerate of different things. One of the problems was the missing rights. The user that executes Django, could not list the contents of the templates/ directory. chmod o+x templates/ did the job. Then there were some settings in the settings.py, that changed the place to look for the templates from templates/iecl_dev/ to iecl_dev/templates/. I saw this wrong path in the error message in my web browser. But simply reverting the settings.py to the old version, was not enough. Some service(s) needed to be restarted. I simply rebooted the machine and everything was fine. Miraculously, the /admin/ page now looks nice as well.
Many thanks for all your tips.