【问题标题】:Django template name conflict [duplicate]Django模板名称冲突[重复]
【发布时间】:2023-03-21 08:10:01
【问题描述】:

可能重复:
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 的顺序得到了第一个模板! 如果我更改已安装应用程序的顺序 - 模板也会相应更改。

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

【问题讨论】:

标签: django templates


【解决方案1】:

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

myproj/
  app1/
    templates/
      app1/
        index.html

这是由随附的应用程序(例如django.contrib.admin)完成的,并且运行良好。我通常在模板根目录中为项目特定文件(例如整个站点的索引)使用通用名称,如 index.html

【讨论】:

  • 这就是 Django 的方式。我忘记了这一点并删除了我的答案,因为这是我心中的正确答案。
猜你喜欢
  • 2010-11-05
  • 1970-01-01
  • 2018-11-27
  • 1970-01-01
  • 2015-12-08
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
相关资源
最近更新 更多