我在Windows XP SP3上运行Python 2.6.1和Django 1.2.1。我正在使用JetBrains PyCharm 1.0来创建和部署我的Django应用程序。
我对Python相对缺乏经验,我开始通过跟随网站上的“编写你的第一个Django应用程序” - 民意调查应用程序来学习Django。我坚持part 3。
当我为“编写你的第一个视图”添加简单的回调函数时,一切都很好。
当我开始写“实际做某事的观点”时,我遇到了障碍。
我按照说明修改了索引视图:
site-templates/polls/
文件夹site-templates
文件夹这是我的views.py中的代码:
from django.template import Context, loader
from polls.models import Poll
from django.http import HttpResponse
def index(request):
latest_poll_list = Poll.objects.all().order_by('-pub_date')[:5]
t = loader.get_template('polls/index.html')
c = Context({
'latest_poll_list': latest_poll_list,
})
return HttpResponse(t.render(c))
这是我的settings.py中的一行:
TEMPLATE_DIRS = ('/site-templates/')
但是我跑的时候仍然收到这条消息:
TemplateDoesNotExist at /polls/
polls/index.html
Request Method: GET
Request URL: http://localhost:8000/polls/
Django Version: 1.2.1
Exception Type: TemplateDoesNotExist
Exception Value:
polls/index.html
在loader.py中抛出异常。我的调试设置如下所示:
TEMPLATE_CONTEXT_PROCESSORS
('django.core.context_processors.auth', 'django.core.context_processors.request')
TEMPLATE_DEBUG
True
TEMPLATE_DIRS
('/site-templates',)
TEMPLATE_LOADERS
('django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader')
我的目录结构如下所示:
我错过了什么? settings.py不正确吗?请指教。
答案 0 :(得分:12)
我遇到了同样的问题。在我的情况下,错误是,该应用程序'不在项目settings.py文件的INSTALLED_APPS
列表中。
错误引发错误消息,他们建议类似错误。
line 25, in get_template TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: authControll/index.html
settings.py - >应用程序定义
INSTALLED_APPS = [
...,
'authControll'
]
答案 1 :(得分:3)
您必须在TEMPLATE_DIRS
设置中使用绝对路径。
方便的事情,在设置的顶部插入:
import os
DIRNAME = os.path.abspath(os.path.dirname(__file__))
然后,只要您使用路径,请使用os.path.join
。
例如,您的TEMPLATE_DIRS
将成为:
TEMPLATE_DIRS = (
os.path.join(DIRNAME, 'site-templates/'),
)
答案 2 :(得分:3)
Django具有某种模式和理念。否则,请尝试使用相同的配置,否则您必须在Django中更改核心模式。
django中的模板模式如下:
polls/templates/polls/index.html
但是要使用它,您必须在配置中添加已安装的应用程序:
INSTALLED_APPS = [
'polls.apps.PollsConfig', #<-- Here this shoud be solve it
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',]
有关更多信息,请参见:
https://docs.djangoproject.com/en/3.0/intro/tutorial02/#activating-models
答案 3 :(得分:1)
我的错误只是定位错误:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'histories',
]
我的解决方案是:
INSTALLED_APPS = [
'histories',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
答案 4 :(得分:0)
这肯定会解决问题,而不是以上所有内容尝试仅添加settings.py
下面的行:
TEMPLATE_DIRS = (
"appname/templates",
)
答案 5 :(得分:-6)
http://docs.djangoproject.com/en/1.2/ref/templates/api/#loading-templates @zsquare答案的小修复:
import os
DIRNAME = os.path.abspath(os.path.dirname(__file__))
TEMPLATE_DIRS = ( DIRNAME+'/site-templates/' )