我是Django的新手。我使用pydev eclipse作为IDE。首先,我创建了一个项目,然后在该项目上欢迎应用程序。我在项目中创建了一个名为Templates的文件夹,并将文件设为“home.html”,home.html包含
<div>
This is my first site
</div>
我将settings.py文件修改为
TEMPLATE_DIRS = ("Templates")
INSTALLED_APPS = (
..........#all default items
'welcome', #the added one
)
views.py包含
from django.shortcuts import render_to_response
def home(request):
return render_to_response('home.html')
urls.py包含
from django.conf.urls import patterns, include, url
from welcome.views import home
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'MajorProject.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^home/$', home),
)
然后我将它作为django项目运行并打开我的浏览器并在localhost:8000 / home上查看 它显示错误
TemplateDoesNotExist at /home/
home.html
Request Method: GET
Request URL: http://localhost:8000/home/
Django Version: 1.6
Exception Type: TemplateDoesNotExist
Exception Value:
home.html
Exception Location: C:\Python27\django\template\loader.py in find_template, line 131
Python Executable: C:\Python27\python.exe
Python Version: 2.7.2
Python Path:
['D:\\Bishnu\\BE\\4th year\\8th semester\\Major Project II\\Working\\Workspace\\MajorProject',
'C:\\Python27\\lib\\site-packages\\distribute-0.6.35-py2.7.egg',
'D:\\Bishnu\\BE\\4th year\\8th semester\\Major Project II\\Working\\Workspace\\MajorProject',
'C:\\Python27\\DLLs',
'C:\\Python27\\lib',
'C:\\Python27\\lib\\plat-win',
'C:\\Python27\\lib\\lib-tk',
'C:\\Python27',
'C:\\Python27\\lib\\site-packages',
'C:\\Python27\\lib\\site-packages\\wx-2.8-msw-unicode',
'C:\\Windows\\SYSTEM32\\python27.zip']
Server time: Sun, 2 Jun 2013 14:25:52 +0545
答案 0 :(得分:3)
如果您使用的是Django 1.8+
你会收到这个警告:
(1_8.W001) The standalone TEMPLATE_* settings were deprecated in Django 1.8 and the TEMPLATES dictionary takes precedence. You must put the values of the following settings into your default TEMPLATES dict: TEMPLATE_DIRS, TEMPLATE_DEBUG.
将模板目录添加到DIRS词典
下的Base TEMPLATES设置中像这样:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
root("templates"), #### Here ####
],
'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',
],
},
},
]
答案 1 :(得分:2)
尝试在setting.py
上设置模板目录
如
TEMPLATE_DIRS = (
os.path.join(os.path.dirname(__file__),'templates'),
)
答案 2 :(得分:1)
带有模板的目录应该命名为templates
,而不是Templates
(即使在Windows上它可能是相同的)。还要确保您在PYTHONPATH
中有应用程序或项目和应用程序的正确目录结构,如:
project/
project/
settings.py
...
welcome/
templates/
home.html
views.py
...
manage.py
然后您无需更改TEMPLATE_DIRS
,因为app_directories.Loader
(默认情况下启用)会在您的应用中找到模板。
如果您仍想更改TEMPLATE_DIRS
,请使用绝对路径,但首选方式是app_directories.Loader
。
答案 3 :(得分:1)
在Django 1.9中
in settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR+r'\templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
...
],
},
},
]
答案 4 :(得分:0)
内部模板“ DIRS”:[],请注意:
'DIRS':[os.path.join(BASE_DIR,'templates')],
进入您的views.py文件并查找template_name(检查其拼写,还检查您是否在此处提到了正确的html文件)
检查您的urls.py文件是否在路径中提到了正确的模板名称
format:urlpatterns = [path(“”,类名或函数名,名称=模板名)
答案 5 :(得分:0)
BASE_DIR =路径(文件)。resolve()。parent.parent
这是Django的默认目录代码 看起来像这样 C:\ user \ pc_name \ django_project
但是,如果您删除最后一个.parent,它将看起来像这样 C:\ user \ pc_name \ django_project \ django_project
所以这是新的BASE_DIR代码 BASE_DIR =路径(文件)。resolve()。parent
将此变量添加到TEMPLATE_DIR TEMPLATE_DIR = os.path.join(BASE_DIR,'template“)
最后一个代码定义了这个 C:\ user \ pc_name \ django_project \ django_project \ template
最终安全升级DIRS 'DIRS':'TEMPLATE_DIR'
希望你做到