Django 模板大纲

Posted

技术标签:

【中文标题】Django 模板大纲【英文标题】:Django template outliner 【发布时间】:2012-04-26 08:12:24 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

对于给定的模板名称,更容易加载模板并检查其中的节点,就像您的想法一样。您可以查看django.template.base 以了解其工作原理。

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

【讨论】:

我知道这不是一件容易的事,即使因为模板可以按条件包含在其他模板中,而无法处理,因为事先不知道。

以上是关于Django 模板大纲的主要内容,如果未能解决你的问题,请参考以下文章

[教程]Django教程大纲初拟定

csharp C#的模板大纲

使用 Django 模板标签的 Mako 模板

模板 Django 应用程序扩展模板 django 项目

Django框架-Django模板(template)系统

Django的templates(模板)