这是我网站的结构:
mysite
app_a
templates
a.html
app_b
templates
b.html
views.py
在views.py
中,我想获得a.html
,
所以我用这个:
return render_to_response('app_a/a.html')
但它显示错误:
TemplateDoesNotExist
我需要做什么?
答案 0 :(得分:6)
只需使用render_to_response('a.html')
假设你有默认的app目录模板加载器,问题是模板路径实际上是a.html
因此,在您当前的格式中,您可以写a.html
而不是app_a/a.html
模板目录的推荐格式是
mysite
app_a
templates
app_a
a.html
app_b
templates
app_b
b.html
views.py
global_templates
app_b
b.html
适用于app_a/a.html
建议使用此格式的原因是您可以基于每个应用程序巧妙地覆盖模板。
如果所有文件都直接位于应用程序模板目录中,则可以轻松获取冲突的模板名称。
答案 1 :(得分:1)
您可以在settings.py中指定TEMPLATE_DIRS变量,该变量是搜索模板的目录元组。如果您将两个应用程序的模板目录添加到TEMPLATE_DIRS,您应该没问题(只需注意搜索路径中的冲突)。
答案 2 :(得分:1)
除TEMPLATE_DIRS
设置外,请尝试将django.template.loaders.app_directories.Loader
添加到TEMPLATE_LOADERS
设置,因为这会为INSTALLED_APPS
中的应用提供所有模板。这样您就不需要将它们全部放在一个主目录下。