user2950593
user2950593

Reputation: 9637

TemplateDoesNotExist at /polls/ index.html

I am doing a tutorial about django project. Actually it is 4.51 in the morning and i want to just make it work.

My urls.py file:

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    (r'^polls/$', 'polls.views.index'),
)

My views.py file:

from django.shortcuts import render

# Create your views here.
from django.shortcuts import render_to_response


def index(request):
    return render_to_response('index.html')

In the folder templates I have index.html file. It showed me the same TemplateDoesNotExist error, so I did some research and I found this question so I've added to my settings.py this code:

import os.path
SITE_ROOT = os.path.dirname(os.path.realpath(__file__))
TEMPLATE_DIRS = (
    os.path.join(SITE_ROOT, 'templates/'),
)

So how to make it work??

This is the traceback:

    Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/polls/

Django Version: 1.6.1
Python Version: 3.3.3
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'polls')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware')

Template Loader Error:
Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
C:\Users\JD\PycharmProjects\MyDjangoApp\MyDjangoApp\templates\index.html

(File does not exist) Using loader django.template.loaders.app_directories.Loader: C:\Python33\lib\site-packages\django\contrib\admin\templates\index.html (File does not exist) C:\Python33\lib\site-packages\django\contrib\auth\templates\index.html (File does not exist)

Traceback:
File "C:\Python33\lib\site-packages\django\core\handlers\base.py" in get_response
  114.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\JD\PycharmProjects\MyDjangoApp\polls\views.py" in index
  8.     return render_to_response('index.html')
File "C:\Python33\lib\site-packages\django\shortcuts\__init__.py" in render_to_response
  29.     return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
File "C:\Python33\lib\site-packages\django\template\loader.py" in render_to_string
  162.         t = get_template(template_name)
File "C:\Python33\lib\site-packages\django\template\loader.py" in get_template
  138.     template, origin = find_template(template_name)
File "C:\Python33\lib\site-packages\django\template\loader.py" in find_template
  131.     raise TemplateDoesNotExist(name)

Exception Type: TemplateDoesNotExist at /polls/
Exception Value: index.html

Upvotes: 1

Views: 6075

Answers (1)

Hevlastka
Hevlastka

Reputation: 1948

Change

import os.path
SITE_ROOT = os.path.dirname(os.path.realpath(__file__))

to

import os
SITE_ROOT = os.path.dirname(os.path.dirname(__file__))

If you look at your traceback, Python is looking for a template folder within your app folder, I assume that it would be the same folder as settings.py.

Another approach is to copy your templates folder into MyDjangoAPP folder.

Upvotes: 3

Related Questions