可能重复:
Django view - load template from calling app's dir first
我有许多应用程序的Django项目。实际上文件结构如下:
myproj/
default/
templates/
index.html (1)
app1/
templates/
index.html (2)
app2/
templates/
index.html (3)
我希望在模板解析时,活动应用程序的模板目录具有最高优先级。但实际上我得到的第一个模板是INSTALLED_APPS命令! 如果我更改已安装应用的顺序 - 模板会相应更改。
问题:有没有办法首先从当前应用程序获取模板?模板名称/显式目录规范的唯一性是实现它的唯一方法吗?
答案 0 :(得分:10)
通常的解决方案是将模板放在以您的应用程序命名的另一个子目录中,例如:
myproj/
app1/
templates/
app1/
index.html
这是由已发布的应用程序(例如django.contrib.admin
)完成的,效果非常好。我通常在模板根目录中使用类似index.html
的通用名称来表示项目特定的文件(例如整个站点的索引)。