模板不存在于/

Posted

技术标签:

【中文标题】模板不存在于/【英文标题】:TemplateDoesNotExist at/ 【发布时间】:2011-08-06 20:40:32 【问题描述】:

这是我的网址http://webtrick.heliohost.org/ 我的模板目录设置:

TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__) , 'templates').replace('\\','/')
)

view.py

from django.http import HttpResponse
from django.template import Template , Context
from django.shortcuts import render_to_response
def index(request):
        return render_to_response('index.html')

url.py

from django.conf.urls.defaults import patterns, include, url
from webtrickster.views import index
urlpatterns = patterns('',
    url(r'^$', index)
)

我不知道这段代码有什么问题 任何帮助表示赞赏

【问题讨论】:

【参考方案1】:

确保您的 Django 应用位于 settings.py 的 INSTALLED_APPS 中。那是我的问题。因此,如果您的投票应用文件夹中有模板文件夹,则需要在设置文件中已安装应用的末尾添加“投票”。

【讨论】:

【参考方案2】:

将您的应用程序添加到 INSTALLED_APPS 的 setting.py 末尾,如下所示:

INSTALLED_APPS = [
    ...
    'django.contrib.staticfiles',
    'mysite'                   
  ]

你的模板目录应该在 mysite 中

mysite
    -settings.py
    -templates/

【讨论】:

它不会在模板目录中加载css文件。【参考方案3】:
 os.path.join(os.path.dirname(__file__) ,'../templates').replace('\\','/')

这对我有用。

【讨论】:

是我一个人,还是../templates'前面要加单引号?【参考方案4】:

我浪费了很多时间试图找出我的 'templates' 目录出了什么问题,并弄清楚了:

您可能忘记在settings.py 的以下部分中添加TEMPLATE_DIR

TEMPLATES = [
    
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        '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',
            ],
        ,
    ,
]

所以它应该有'DIRS': [TEMPLATE_DIR,], 而不是'DIRS': [],

另见答案:TemplateDoesNotExist at /

【讨论】:

【参考方案5】:

首先你需要在你的django项目文件夹中创建一个名为'templates'的文件夹然后,你可以通过两种方式添加模板目录打开你的设置文件然后添加以下任何代码

1) 你可以直接指定你的模板路径

TEMPLATE_DIRS = ( 'D:/Django/web/Kindset/templates' #your file path ,this is my template directory path )

2) 或者如果你想使用通用路径意味着使用

TEMPLATE_DIRS = ( 'os.path.join(BASE_DIR, "templates"),' )

【讨论】:

【参考方案6】:

TEMPLATE_DIRS = ( “我的网站/模板” )

TemplateDoesNotExist - file exists, no permissions issue

【讨论】:

【参考方案7】:

我的模板文件夹不是 python 包,因为它缺少 __init__.py 文件。 这可能是 Django 没有找到我的模板的原因。

【讨论】:

【参考方案8】:

这里有很多很好的答案,但是在更新从 django 1.6 到 django 1.7 的许多卫星中没有维护的旧项目(nightmare=zinnia, django_cms, AUTH_USER_MODEL = 'accounts.CustomUser')作为一个非常长的过程的第一阶段,我发现没有任何效果。然后我注意到错误在它试图加载的模板周围有引号:

/home/vagrant/venv/crowd88/local/lib/python2.7/site-packages/djangocms_admin_style/templates/'core/includes/ga.html' (File does not exist)

于是我查看了源码,发现引号是这样去掉的:

# lib/python2.7/site-packages/cms/utils/plugins.py
...
template = get_template(force_unicode(node.template).strip('"'))
...

然后我注意到加载器中使用了单引号

% include core/includes/ga.html' %

所以修复是

% include "core/includes/ga.html" %

使用正则表达式过程

【讨论】:

【参考方案9】:

将您的“模板”文件夹移动到主文件夹,而不是任何子文件夹。或与其他项目文件夹处于同一级别。这可能是 Django 没有找到我的模板的原因。 这样做后我的项目工作了。

【讨论】:

【参考方案10】:

默认情况下,在 settings.py 文件中,'DIRS' 数组是空的,如下所示。

TEMPLATES = [
    
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        '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',
            ],
        ,
    ,
]

所以要解决这个问题,只需将 BASE_DIR / 'templates' 添加到数组中,如下所示。你很高兴。

TEMPLATES = [
    
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [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',
            ],
        ,
    ,
]

【讨论】:

【参考方案11】:

转到 settings.py 文件并检查 TEMPLATES 部分。注意 DIR 值,默认情况下它应该是 []。在其中添加“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',
        ],
    ,
,

]

【讨论】:

【参考方案12】:

您可能忘记安装您的应用程序

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'tutorials'
]

确保您还在模板中正确添加目录

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',
            ],
        ,
    ,
]

【讨论】:

【参考方案13】:

确保 settings.py 中的 dirs 目录如下所示

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

【讨论】:

以上是关于模板不存在于/的主要内容,如果未能解决你的问题,请参考以下文章

服务“fos_user.mailer”依赖于不存在的服务“模板”

Pycharm运行脚本报错,所用模板不存在?

模板不显示验证错误(Django)

Django 模板不存在

检查模板中是不是存在变量,如果不存在则不会在记录器中导致错误

苹果cms模板文件不存在:public/jump.html