我正在尝试渲染一个简单的页面,但我遇到了一个问题。
TemplateDoesNotExist at /pages/
{}
找不到模板文件夹。这是我的 settings.py
的配置BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'pages/template')],
'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',
],
},
},
]
我做错了吗?
--------------- CMD ----------------
Internal Server Error: /pages/
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\django\core\handlers\base.py", line 149, in get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Python34\lib\site-packages\django\core\handlers\base.py", line 147, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python34\Scripts\src\pages\views.py", line 6, in index
return render('index.html', context)
File "C:\Python34\lib\site-packages\django\shortcuts.py", line 67, in render
template_name, context, request=request, using=using)
File "C:\Python34\lib\site-packages\django\template\loader.py", line 96, in render_to_string
template = get_template(template_name, using=using)
File "C:\Python34\lib\site-packages\django\template\loader.py", line 43, in get_template
raise TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: {}
[12/Jan/2016 20:51:57] "GET /pages/ HTTP/1.1" 500 74646
-----------更新-------------
文件树
views.py
from django.shortcuts import render
# Create your views here.
def index(request):
context = {}
return render(request, 'index.html', context)
答案 0 :(得分:5)
当您致电request
时,您已忘记第一个参数render
。
return render(request, 'index.html', context)
您可以拥有多个模板目录,例如src/template
和pages/template
。如果您想拥有src/template
目录,则需要将其包含在DIRS
选项中。
'DIRS': [os.path.join(BASE_DIR, 'templates')],
您在pages/templates
目录中不需要DIRS
- 应用加载程序会找到该目录中的模板,因为您APP_DIRS
设置为True
},pages
位于INSTALLED_APPS
设置中。
答案 1 :(得分:4)
您可能忘记在Installed_Apps设置中添加应用。
INSTALLED_APPS = [
'your_app'
答案 2 :(得分:2)
您的模板路径错误。 默认情况下,django具有html文件的“模板”文件夹,在app文件夹中尝试创建名为template的文件夹,在其中包含文件index.html
答案 3 :(得分:0)
我犯了这个错误:
TemplateDoesNotExist(template_name,chain = chain)django.template.exceptions.TemplateDoesNotExist:index.html
当我以前通过PyCharm制作虚拟环境时,因为它没有安装从模板文件夹加载模板所需的所有工具。
我现在通过命令提示符创建我的virtual environments并使用pip install“something”安装Django和其他任何我需要的东西。
注意:强> 我知道这不能回答这个问题,但这就是我做错了。我偶然发现了这个问题,其他人也有同样的错误。
答案 4 :(得分:0)
请检查settings.py文件中是否声明了正确的应用程序名称,并检查
TEMPLATE_DIR=os.path.join(BASE_DIR,'templatefoldername') and TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [TEMPLATE_DIR],
'APP_DIRS': True,
是正确的。还请签入views.py提到的html文件名是正确的。(return render(request, 'details/htmlfile', context=my_dict)
)
答案 5 :(得分:0)
您只需要提及html文件所在的文件夹的名称即可。
'DIRS': [os.path.join(BASE_DIR, 'templates')]
然后回到您的view.py文件,只需按以下步骤操作即可
return render(request, 'file_name.html')
-- run the server