位于/polls/index.html的TemplateDoesNotExist [英] TemplateDoesNotExist at /polls/ index.html
问题描述
我正在做一个有关django项目的教程.其实早上是4.51,我只想让它工作.
I am doing a tutorial about django project. Actually it is 4.51 in the morning and i want to just make it work.
我的urls.py文件:
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'),
)
我的views.py文件:
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')
在文件夹模板中,我有index.html文件.它向我显示了相同的 TemplateDoesNotExist
错误,因此我进行了一些研究,我发现了这个问题所以我已经添加到我的settings.py此代码:
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/'),
)
那么如何使其工作呢?
这是回溯:
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
(文件不存在)使用loader django.template.loaders.app_directories.Loader:C:\ Python33 \ lib \ site-packages \ django \ contrib \ admin \ templates \ index.html(文件不存在)C:\ Python33 \ lib \ site-packages \ django \ contrib \ auth \ 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
推荐答案
更改
import os.path
SITE_ROOT = os.path.dirname(os.path.realpath(__file__))
到
import os
SITE_ROOT = os.path.dirname(os.path.dirname(__file__))
如果您查看回溯,Python会在您的app文件夹中寻找一个模板文件夹,我认为它与settings.py所在的文件夹相同.
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.
另一种方法是将模板文件夹复制到MyDjangoAPP文件夹中.
Another approach is to copy your templates folder into MyDjangoAPP folder.
这篇关于位于/polls/index.html的TemplateDoesNotExist的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!