模板不存在

时间:2013-06-01 08:57:02

标签: django

我是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

6 个答案:

答案 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)

检查以下修复步骤

步骤1:

内部模板“ DIRS”:[],请注意:

'DIRS':[os.path.join(BASE_DIR,'templates')],

步骤2:

进入您的views.py文件并查找template_name(检查其拼写,还检查您是否在此处提到了正确的html文件)

步骤3:

检查您的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'

希望你做到