在Django中使用项目目录作为模板目录是不是一个坏主意?

时间:2011-02-05 23:39:47

标签: django templates

不要误会我的意思,我不是在谈论将我的HTML放在settings.py文件旁边,而是在TEMPLATE_DIR列表中添加项目目录(包含settings.py文件)所以我可以通过命名'app/template/file.html'来调用任何模板。

我只是想知道为什么Django没有附带模板名称空间。它强迫你要么:

  1. 创建一个与所有应用分开的模板目录,然后为每个应用创建一个目录并将HTML放入其中。
  2. 在每个app dir中创建一个模板目录,并使用应用程序名称在其中创建另一个目录,然后将HTML放入其中。
  3. 这不太理想,因为:

    1. 强制您将HTML放在应用之外。非常可插拔。
    2. 通过强制您创建冗余目录树project_dir/app_name/template/appname来违反DRY,否则,如果您有多个名为'index.html的模板,那么您就会陷入困境。
    3. 将项目目录定义为模板目录以调用所有模板文件'app_name/template/file.html'是不是一个坏主意?如果是,为什么?你会怎么干净地干净?

2 个答案:

答案 0 :(得分:0)

我个人使用app_name/templates用于应用相关模板,projects/templates用于全局模板。我个人认为这很有用,因为我非常喜欢我的应用程序和我的项目之间的松耦合,所以我倾向于让它们分离。

然而,django为您提供了自由选择。如果你选择的感觉很好我根本没有看到任何问题。

答案 1 :(得分:0)

你对app_directories模板加载器的工作方式提出了一个有趣的论点。除了用模板污染应用程序的根目录之外,我无法想到因此而出现的问题。

也许在制作自己的模板加载器时需要进行调查吗?