Django模板不存在错误,虽然显示“文件存在”
我在使用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 找不到的那个模板。