Reputation: 9637
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
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