我正在尝试获取 Django 项目模板的可视化表示,作为层次结构。
主要思想是获取模板名称列表,因为默认模板加载机制将返回(即尊重TEMPLATE_DIRS
,TEMPLATE_LOADERS
等),然后解析模板查找{% block %}
和 {% extends %} 标签,以创建树结构。最后使用 grapviz 进行可视化。
我不确定这是否是一种可行的方法。但刚开始,我怎样才能按照我描述的方式加载模板?
或者,类似的东西是否已经存在?
我正在尝试获取 Django 项目模板的可视化表示,作为层次结构。
主要思想是获取模板名称列表,因为默认模板加载机制将返回(即尊重TEMPLATE_DIRS
,TEMPLATE_LOADERS
等),然后解析模板查找{% block %}
和 {% extends %} 标签,以创建树结构。最后使用 grapviz 进行可视化。
我不确定这是否是一种可行的方法。但刚开始,我怎样才能按照我描述的方式加载模板?
或者,类似的东西是否已经存在?
通常,模板是通过名称在线查找的,每个可能使用的模板都没有根条目。
因此,如果您想 grep 项目中所有使用的模板,您需要扫描 TEMPLATE_LOADERS 中的加载程序可能检查的每个地方,以生成可能的条目以供以后自下而上检查。这会很困难,一些加载程序的后端甚至可能不允许按目录获取操作。
或者您可以将 INSTALLED_APPS 中的视图和 urls 文件解析为 grep 模板名称,但这仅适用于模板的硬编码名称,而且更加困难。此外,可能有从硬编码字符串加载的模板......
对于给定的模板名称,正如您的想法一样,更容易加载模板并检查其中的节点。你可以检查django.template.base
一下它是如何工作的。
此外,您可以利用 django-debug-toolbar 来显示用于请求的模板。而且,IMO,保持模板结构平坦、简单并因此确定,更容易实现。