我创建了一个名为" crepes_bretonnes"的项目。在这个项目中,我有一个应用程序博客。我创建了一个模板date.html。这是我的文件夹的结构:
crepes_bretonnes/
blog/
__init__.py
admin.py
migrations/
__init__.py
models.py
templates/
blog/
addition.html
date.html
tests.py
views.py
crepes_bretonnes/
__init__.py
settings.py
urls.py
wsgi.py
templates/
db.sqlite3
manage.py
当我尝试查看该页面时,我有一条消息templateDoesNotExist。我在网上看了很多关于它的内容,但我没有成功解决我的问题。事实上,我不明白为什么Django不会在应用程序博客的模板文件夹中搜索,尽管我写了#34;博客"在INSTALLED_APP
中的setting.py中。显然,我已将TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates'),)
放入setting.py
。我还试图改变字典TEMPLATES。但是,如果我理解得很好,它就没有链接,因为Django即使没有这个也应该找到我的模板。
我没有任何解决方案。
感谢您的帮助。
PS:如果我将date.html放在常规模板文件夹中并且我安排了一些行,它就可以了。然而,这不是一个解决方案,我想尊重一个好的结构。
更新:
感谢您的回答。是的,它确实在我的设置中显示INSTALLED_APPS
,APP_DIRS
已经True
。
以下是TEMPLATES
中的setting.py
:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, "templates")],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
更新: 调试消息显示Django在django.template.loaders.app_directories.Loader中搜索:/Users/benjamin/anaconda/lib/python2.7/site-packages/django/contrib/admin/templates/blog/date.html。 但是我没有在这些文件夹中写任何东西......我在Documents中工作。为什么Django在这里搜索而不是在Documents中搜索?
答案 0 :(得分:0)
我认为'INSTALLED_APP'
是一个拼写错误,它在您的设置中确实显示'INSTALLED_APPS'
。无论如何,您需要为APP_DIRS = True
中的模板设置app/templates
文件夹:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
],
'APP_DIRS': True, # this line is important
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages'
# ...
]
},
},
]
答案 1 :(得分:0)
我遇到了一个同样的问题,即说模板不存在,我通过更改views.py中的URL模式来解决它,以前我只提到date.html,后来我用blog / date.html进行了编辑。希望对您有帮助。
答案 2 :(得分:0)
转到您的setting.py,然后尝试尝试以下操作:
os.path.join(BASE_DIR, "templates")
例如:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, "templates")],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
答案 3 :(得分:0)
我遇到同样的问题, 已将应用添加到INSTALLED_APPS 完成,因为您(和我)没有在主应用程序中使用模板,因此必须将其注册到设置中(例如从主url文件中引用应用程序的url)