Django模板不存在错误,虽然它显示'文件存在'

cod*_*thu 6 python django django-templates

我无法在Django 1.7中呈现任何html页面.我的'index.html'位于' project/seatalloc/templates/index.html',而我的view.py project/seatalloc/views.py看起来像:

 def index(request):
       return render(request, 'index.html', dirs=('templates',)) 
Run Code Online (Sandbox Code Playgroud)

project/project/settings.py有模板目录集:

TEMPLATE_DIRS = (
    '/Users/Palak/Desktop/academics/sem3/cs251/lab11/project/seatalloc/templates',

)
Run Code Online (Sandbox Code Playgroud)

urls.py:

urlpatterns = patterns('',
    url(r'^seatalloc/', include('seatalloc.urls')),
    url(r'^admin/', include(admin.site.urls)),
)
Run Code Online (Sandbox Code Playgroud)

模板加载器

我试图严格遵循文档,但无法弄清楚Django是否检测到文件,为什么我在/ seatalloc /错误时得到TemplateDoesNotExist.我是Django的新手,请有人帮忙.

Mar*_*kus 30

如果 - 在您的情况下 - 您收到TemplateDoesNotExist错误,并且调试页面在相关模板旁边显示"文件存在",这通常(总是?)表示此模板引用另一个无法找到的模板.

在您的情况下,index.html包含一个语句({% extends %}, {% include %}, ...)引用Django找不到的另一个模板.不幸的是,从Django 1.8.3开始,调试页面总是命名基本模板,而不是Django找不到的模板.


Ade*_*taş 2

尝试这样,

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
TEMPLATE_DIRS = (
     os.path.join(BASE_DIR, 'templates/'),
)
Run Code Online (Sandbox Code Playgroud)

  • 自 1.8 起已弃用:https://docs.djangoproject.com/en/1.8/ref/settings/#template-dirs (2认同)