Django模板不存在错误,虽然显示“文件存在”

6 投票
3 回答
11318 浏览
提问于 2025-04-30 02:53

我在使用Django 1.7的时候,无法显示任何HTML页面。我的'index.html'文件放在'project/seatalloc/templates/index.html',而我的视图文件views.py在project/seatalloc/views.py里,内容是:

 def index(request):
       return render(request, 'index.html', dirs=('templates',)) 

在project/project/settings.py文件中,我已经设置了模板目录:

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

)

urls.py文件的内容是:

urlpatterns = patterns('',
    url(r'^seatalloc/', include('seatalloc.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

模板加载器

我已经尽量严格按照文档来操作,但还是搞不明白为什么Django没有找到文件,导致我在/seatalloc/这个地址上出现了TemplateDoesNotExist的错误。我对Django还很陌生,能不能请大家帮帮我。

暂无标签

3 个回答

-1

首先,不要在settings.py的模板目录中使用固定路径,应该使用:

BASE_DIR = os.path.dirname(os.path.dirname(__file__))

TEMPLATE_DIRS = (
      BASE_DIR +'/Templates',


  )

而且模板目录应该放在项目目录里,也就是manage.py文件所在的地方。

在view.py中,使用render_to_response,而不是单纯的render

return  render_to_response("index.html") 
2

可以试试这样,

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
TEMPLATE_DIRS = (
     os.path.join(BASE_DIR, 'templates/'),
)
32

如果你遇到“TemplateDoesNotExist”这个错误,而调试页面上显示“文件存在”旁边有你提到的模板,这通常(几乎总是)意味着这个模板引用了另一个找不到的模板。

在你的情况下,index.html 文件里有一个语句({% extends %}, {% include %}, ...),它指向了一个 Django 找不到的其他模板。不幸的是,从 Django 1.8.3 开始,调试页面总是会显示基础模板的名字,而不是 Django 找不到的那个模板。

撰写回答