Django模板名称冲突

时间:2012-07-13 12:31:17

标签: django templates

  

可能重复:
  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命令! 如果我更改已安装应用的顺序 - 模板会相应更改。

问题:有没有办法首先从当前应用程序获取模板?模板名称/显式目录规范的唯一性是实现它的唯一方法吗?

1 个答案:

答案 0 :(得分:10)

通常的解决方案是将模板放在以您的应用程序命名的另一个子目录中,例如:

myproj/
  app1/
    templates/
      app1/
        index.html

这是由已发布的应用程序(例如django.contrib.admin)完成的,效果非常好。我通常在模板根目录中使用类似index.html的通用名称来表示项目特定的文件(例如整个站点的索引)。