3

我正在尝试获取 Django 项目模板的可视化表示,作为层次结构。

主要思想是获取模板名称列表,因为默认模板加载机制将返回(即尊重TEMPLATE_DIRS,TEMPLATE_LOADERS等),然后解析模板查找{% block %}和 {% extends %} 标签,以创建树结构。最后使用 grapviz 进行可视化。

我不确定这是否是一种可行的方法。但刚开始,我怎样才能按照我描述的方式加载模板?

或者,类似的东西是否已经存在?

4

1 回答 1

1

通常,模板是通过名称在线查找的,每个可能使用的模板都没有根条目。

因此,如果您想 grep 项目中所有使用的模板,您需要扫描 TEMPLATE_LOADERS 中的加载程序可能检查的每个地方,以生成可能的条目以供以后自下而上检查。这会很困难,一些加载程序的后端甚至可能不允许按目录获取操作。
或者您可以将 INSTALLED_APPS 中的视图和 urls 文件解析为 grep 模板名称,但这仅适用于模板的硬编码名称,而且更加困难。此外,可能有从硬编码字符串加载的模板......

对于给定的模板名称,正如您的想法一样,更容易加载模板并检查其中的节点。你可以检查django.template.base一下它是如何工作的。

此外,您可以利用 django-debug-toolbar 来显示用于请求的模板。而且,IMO,保持模板结构平坦、简单并因此确定,更容易实现。

于 2012-04-14T03:46:07.980 回答