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.