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

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

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

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

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

【问题讨论】:

    标签: django templates inheritance graph django-templates


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我知道这不是一件容易的事,即使因为模板可以按条件包含在其他模板中,而无法处理,因为事先不知道。
    猜你喜欢
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    相关资源
    最近更新 更多