8

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

6 回答 6

6

尝试将模板目录设置在setting.py.
作为

TEMPLATE_DIRS = (
                    os.path.join(os.path.dirname(__file__),'templates'),
)
于 2013-06-07T17:41:13.433 回答
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',
            ],
        },
    },
]
于 2015-09-02T00:32:53.487 回答
2

在 Django 1.9 中

in settings.py
TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [BASE_DIR+r'\templates'],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            ...
        ],
    },
},
]
于 2016-06-23T01:47:11.583 回答
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.

于 2013-06-01T10:16:48.723 回答
0

检查以下步骤以修复

步骤1:

在模板中,'DIRS':[],提到这个:

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

第2步:

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

第 3 步:

检查您的 urls.py 文件,无论您是否在路径中提到了正确的模板名称

格式:urlpatterns = [ path(" ", 类名或函数名, name = 模板名)

于 2020-02-10T10:31:29.207 回答
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 = Path( file ).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'

希望你做到了

于 2020-12-01T15:07:19.333 回答