Django模板名称冲突

13
可能是重复问题: Django视图-首先从调用应用程序的目录中加载模板 我有一个Django项目,其中包含多个应用程序。实际上,文件结构如下:
myproj/
  default/
    templates/
      index.html  (1)
  app1/
    templates/
      index.html  (2)
  app2/
    templates/
      index.html  (3)

我原以为活动应用程序的模板目录在模板解析时具有最高优先级。但实际上,我得到的第一个模板是根据INSTALLED_APPS顺序确定的!如果我改变已安装应用的顺序,则相应地更改模板。
问题:是否有方法首先从当前应用程序获取模板?唯一性模板名称/显式目录规范是实现这一点的唯一方法吗?

1
你可能想看一下https://dev59.com/X3A75IYBdhLWcg3w0cjx - Rohan
1个回答

14

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

myproj/
  app1/
    templates/
      app1/
        index.html

这是通过预装的应用程序(如django.contrib.admin)完成的,并且效果非常好。我通常在模板根目录中使用通用名称,例如index.html 用于项目特定文件(例如整个站点的索引)。


这就是 Django 的方式。我忘记了这一点,因为在我看来这是正确的答案。 - Jens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接