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