Django教程建议组织这样的模板:
在刚刚创建的templates目录中,创建另一个名为polls的目录,并在其中创建一个名为index.html的文件。换句话说,您的模板应位于polls / templates / polls / index.html。由于app_directories模板加载器的工作方式如上所述,您可以将Django中的此模板简单地称为polls / index.html。
教程还讲述了如果我将index.html放在polls / templates中会发生什么:
现在我们可以将我们的模板直接放在民意调查/模板中(而不是创建另一个民意调查子目录),但这实际上是个坏主意。 Django将选择它找到的第一个名称匹配的模板,如果你在不同的应用程序中有一个同名的模板,Django将无法区分它们。我们需要能够将Django指向正确的,并且确保这一点的最简单方法是通过命名它们。也就是说,将这些模板放在为应用程序本身命名的另一个目录中。
我的假设是,只要我创建一个独立的应用程序,它的模板也与其他应用程序隔离,没有任何子文件夹魔法。
是否有另一种命名空间的方法,所以我可以将模板称为index.html而不创建重复的文件夹?
答案 0 :(得分:0)
在Django项目中组织模板的方式非常灵活。因此,只要您在视图中指定正确的模板名称,就没有什么可以阻止您按需要订购模板文件。例如,您可以使用基于类的视图作为轮询列表,将template_name
指定为您喜欢的任何内容:
# polls/views.py
from django.views.generic import ListView
from .models import Poll
class PollList(ListView):
model = Poll
template_name = 'any/path/you/choose/any_name.html'
话说回来,创建一致的模板结构以保持代码可维护性是件好事。我建议至少保留您的页面级模板(用于返回整个html页面的内容),文件夹中包含相关的应用程序名称以及您包含的任何内容({{1}中包含的片段} {tag}}在{% include %}
个子文件夹中,如下所示:
includes
修改强>
如果仍然需要名称空间,可以使用URL namespaces。