TemplateDoesNotExist错误(Python 3.6.1、Django 1.11.1、PyCharm)
我试图使用render显示在PyCharm上编辑的HTML,但当我输入地址:TemplateDoesNotExist错误(Python 3.6.1、Django 1.11.1、PyCharm),python,django,Python,Django,我试图使用render显示在PyCharm上编辑的HTML,但当我输入地址:127.0.0.1:8000/index/,出现以下TemplateDoesNotExist异常: TemplateDoesNotExister位于/索引/ index.html 请求方法:获取 请求URL: Django版本:1.11.1 异常类型:TemplateDoesNotExist 异常值:index.html 异常位置:get_模板第25行中的D:\python3.6.1\lib\site packages\
127.0.0.1:8000/index/
,出现以下TemplateDoesNotExist
异常:
TemplateDoesNotExister位于/索引/
index.html
请求方法:获取
请求URL:
Django版本:1.11.1
异常类型:TemplateDoesNotExist
异常值:index.html
异常位置:get_模板第25行中的D:\python3.6.1\lib\site packages\django\template\loader.py
Python可执行文件:D:\python3.6.1\Python.exe
Python版本:3.6.1
Python路径:['C:\Users\Administrator\guest', 'D:\python3.6.1\python36.zip', 'D:\python3.6.1\DLLs', 'D:\python3.6.1\lib', 'D:\python3.6.1', 'D:\python3.6.1\lib\site包'] 服务器时间:2017年6月2日星期五03:30:58+0000`TemplateDoesNotextister at/index/ settings.py:
ROOT_URLCONF = 'guest.urls'
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',
],
},
},
]
views.py:
from django.shortcuts import render
# Create your views here.
def index(request):
return render(request,"index.html")
PyCharm截图:
我尝试了StackOverflow上提供的一些方法,但它们不起作用。此异常是否由错误的目录引起?我如何处理这种情况 看看这个:
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': [],
您需要告诉Django在哪里查找模板。如果主项目根目录中有templates文件夹。然后,添加
os.path.join(BASE_DIR, 'templates')
这假设您的项目具有以下结构:
root
app1
...
templates/
what we're referencing with os.path.join(BASE_DIR, "templates")
....
static/
what we're referencing with STATIC_ROOT = os.path.join(BASE_DIR, "static")
...
如果您在应用程序中放置模板。有两件事
项目中的应用程序将需要模板文件夹的此结构
app name (folder)
templates (folder)
app name (folder)
(template files) e.g. - "base.html"
您需要添加这一行
os.path.join(BASE_DIR, APP NAME, "templates")
附录:毫无疑问,您也会遇到这个问题。。。那么,让我们继续报道它
如果要扩展/包括应用程序中的模板(不在基本模板文件夹中),则需要参考它们的位置:
示例:我在“myapp/templates/myapp/template.html”中有一个模板,我想包含它
然后,我会做
{%include“myapp/template.html”%}
或者如果扩展{%extend“myapp/template.html”%}
。如果它们在基本模板文件夹中,那么您可以直接将它们引用为“template.html”
我也有同样的问题。这主要是因为您没有在“settings.py”文件中安装应用程序
只需在settings.py文件中执行此操作,错误就会消失
INSTALLED_APPS = [
'<app name>.apps.<app name>Config',
]
已安装的应用程序=[
“.apps.Config”,
]
在粘贴错误目录导致的“应用程序名称”的地方。。。你没有任何目录:
'dirs':[]
你做了collectstatics
了吗?你在settings.py
文件中设置了静态路径了吗?你把所有的模板都放在static/templates文件夹中了吗?@piyuss.Wanare你的评论每一部分都是错误的。为什么collectstatic与模板有任何关系?为什么模板会在静态目录中?非常感谢您耐心的解释,我的模板(文件夹)设置在我的应用程序“sign”下,我尝试添加应用程序名称“sign”:非常感谢您耐心的解释,我的模板(文件夹)设置在我的应用程序“sign”下,我尝试添加应用程序名称“sign”:“DIRS”:[os.path.join(BASE_DIR,sign,“templates”)],但出现另一个异常,NameError,这意味着未定义名称“sign”。很抱歉,我对python知之甚少,但我真的很想了解一下我现在面临的问题。它不是一个变量,而是一个字符串。。。使用引号。听起来并不刺耳,但如果你不知道这一点,就不应该尝试使用Django。这是初级Python,Django是高级Python。至少通过一些教程,它会帮你省去一些头疼的事。哇!!!它成功了!非常感谢,是的,我在看一本我最喜欢的测试工程师的教科书,当我看这本书时,我遇到了这样的问题…啊哈,再次感谢!我可以重复一下我犯错误的原因吗?您的意思是我的应用程序名称的形式是字符串,因此我需要添加“”>