TemplateDoesNotExist但它存在

时间:2016-09-23 16:03:14

标签: python django python-2.7 django-templates

Python 2.7& Django 1.10 我的模板存在,但我做错了!

TemplateDoesNotExist at /basicview/2/
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>TEST</title>
</head>
<body>
This is template_two view!
</body>
</html>

Request Method:     GET
Request URL:    http://127.0.0.1:8000/basicview/2/
Django Version:     1.10.1
Exception Type:     TemplateDoesNotExist
Exception Value:    

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>TEST</title>
</head>
<body>
This is template_two view!
</body>
</html>

Exception Location:     /home/i/djangoenv/local/lib/python2.7/site-packages/Django-1.10.1-py2.7.egg/django/template/loader.py in get_template, line 25
Python Executable:  /home/i/djangoenv/bin/python
Python Version:     2.7.11
Python Path:    

['/home/i/djangoenv/bin/firstapp',
 '/home/i/djangoenv/lib/python2.7',
 '/home/i/djangoenv/lib/python2.7/plat-i386-linux-gnu',
 '/home/i/djangoenv/lib/python2.7/lib-tk',
 '/home/i/djangoenv/lib/python2.7/lib-old',
 '/home/i/djangoenv/lib/python2.7/lib-dynload',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-i386-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/home/i/djangoenv/local/lib/python2.7/site-packages',
 '/home/i/djangoenv/local/lib/python2.7/site-packages/Django-1.10.1-py2.7.egg',
 '/home/i/djangoenv/lib/python2.7/site-packages',
 '/home/i/djangoenv/lib/python2.7/site-packages/Django-1.10.1-py2.7.egg']

Server time:    Пт, 23 Сен 2016 15:43:30 +0000

settings.py (os.path.join(BASE_DIR),'templates'或/ home / mainapp / templates)无效..

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

article / views.py 我的def看起来像:

def template_two(request):
    view = "template_two"
    t = get_template('myview.html')
    html = t.render(Context({'name': view}))
    return render(request, html, {})

我的档案:

mainapp/mainapp/settings.py
mainapp/mainapp/article/views.py
mainapp/templates/myview.html

6 个答案:

答案 0 :(得分:2)

我建议你把你的temlates放在你的应用程序中。

您的文件将在此处:

mainapp/mainapp/templates/myview.html

请务必将mainapp添加到INSTALLED_APPS,如下所示:

INSTALLED_APPS = [
   ...
   'mainapp',
]

答案 1 :(得分:1)

settings.py 中,您有'DIRS': ['templates'],

模板的路径为mainapp/templetes/myview.html

你有拼写错误templetes != templates。将模板重命名为templates

答案 2 :(得分:1)

问题是您手动渲染模板并同时使用render快捷方式。您的get_template正在运行,但是当您致电render(request, html, {})时,Django会将html视为文件名,并查找名为<!DOCTYPE html>\n<html>...的模板文件。

您应该手动渲染模板:

def template_two(request):
    view = "template_two"
    t = get_template('myview.html')
    html = t.render({'name': view})  # Note you should use a plain dictionary, not `Context` on Django 1.8+
    return HttpResponse(html)

或者,使用render快捷方式更简单。

def template_two(request):
    view = "template_two"
    return render(request, "myview.html", {'name': view})

您还应该将DIRS设置更改为使用os.path.join(BASE_DIR, 'templates')。使用字符串'templates'不起作用。

答案 3 :(得分:0)

步骤1:复制模板的路径。

enter image description here

第2步:过去设置中 DIRS 中的复制路径。py>>“模板”

enter image description here

  

它为我工作

答案 4 :(得分:0)

在 Django 3.1.7 中,我刚刚重新启动了服务器“python manage.py runserver”,它工作正常。 我在 settings.py 中的条目是

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

答案 5 :(得分:0)

截至 2021 年 5 月 5 日,我为解决此错误所做的一切都在 settings.py 中添加了“DIRS”的完整路径

示例:

settings.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [r'the path to the templates folder 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',
            ],
        },
    },
]