Django:在/.../的TemplateDoesNotExist

时间:2016-01-12 20:00:22

标签: python django

我正在尝试渲染一个简单的页面,但我遇到了一个问题。

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

-----------更新-------------

文件树

enter image description here

views.py

from django.shortcuts import render

# Create your views here.
def index(request):
    context = {}
    return render(request, 'index.html', context)

6 个答案:

答案 0 :(得分:5)

当您致电request时,您已忘记第一个参数render

return render(request, 'index.html', context)

您可以拥有多个模板目录,例如src/templatepages/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