Django 模板大纲
Posted
技术标签:
【中文标题】Django 模板大纲【英文标题】:Django template outliner 【发布时间】:2012-04-26 08:12:24 【问题描述】:我正在尝试获取 Django 项目模板的可视化表示,作为层次结构。
主要思想是获取模板名称列表,因为默认模板加载机制将返回(即尊重TEMPLATE_DIRS
、TEMPLATE_LOADERS
等),然后解析模板以查找% block %
和% extends % 标签,以创建树结构。最后使用 grapviz 进行可视化。
我不确定这是否可行。但刚开始,我怎样才能按照我描述的方式加载模板?
或者,类似的东西是否已经存在?
【问题讨论】:
【参考方案1】:通常,模板是通过在线名称查找的,每个可能使用的模板都没有根条目。
因此,如果您想 grep 项目中所有使用的模板,您需要扫描 TEMPLATE_LOADERS 中的加载程序可能检查的每个位置,以生成可能的条目以供以后自下而上检查。这会很困难,一些加载器的后端甚至可能不允许按目录提取操作。 或者您可以将 INSTALLED_APPS 中的视图和 urls 文件解析为 grep 模板名称,但这仅适用于模板的硬编码名称,而且更加困难。 此外,可能有从硬编码字符串加载的模板...
对于给定的模板名称,更容易加载模板并检查其中的节点,就像您的想法一样。您可以查看django.template.base
以了解其工作原理。
此外,您可以利用 django-debug-toolbar 来显示用于请求的模板。并且,IMO 保持模板结构扁平、简单并因此确定,更容易实现。
【讨论】:
我知道这不是一件容易的事,即使因为模板可以按条件包含在其他模板中,而无法处理,因为事先不知道。以上是关于Django 模板大纲的主要内容,如果未能解决你的问题,请参考以下文章