Django模板系统 - 从模板获取字段

时间:2012-09-07 07:41:50

标签: django templates field

是否有一个函数返回模板中预期的字段列表?例如,我有以下模板:

hello i am {{ name }}. {% for i in docs %} i have doc {{ i }}

写在档案中。我想得到一个包含以下内容的词典:

{'name': 'str', 'docs': 'list'}

有类似的东西,或者我必须自己写吗?

2 个答案:

答案 0 :(得分:2)

据我所知,不......

您的模板包含一些HTML和一些占位符(可能是其他内容)。 render_to_template做的是,它获取一个上下文字典,其中包含一些键和一些附加到该键和模板的数据。然后,如果您的模板包含{% if...%}{%for....%}

等控制流,则根据键名将值放置到这些占位符,执行一些循环或条件检查

如果您的设置中关闭了TEMPLATE_DEBUG,并且在您的上下文词典中有一个没有匹配键的占位符,那么它会跳过它而不会引发任何错误。

此外,如果您将表单对象传递给模板并将对象直接放置到模板(不单独调用每个字段)[ex:{{form}}{{form.as_p}},那么django将检查表单上的字段和它们as it is shown here。在这种情况下,您只会知道使用该表单。您必须检查Form定义中使用的字段。

如果您仔细查看该过程,必须知道放置上下文字典所需的内容。您可以编写一个解析器来解析您的模板,但这比仅仅检查模板并找到丢失的数据要困难得多。

答案 1 :(得分:0)

内置{%debug%}标记可能对您有所帮助,但我不知道我是否完全理解您的要求。基本上,如果您将调试标记放在模板中,它将打印许多有用的东西,包括模板中可用的所有变量。

也许您可以查看debug tag的源代码(因为他们可以访问那里的所有变量),并基于此构建custom tag标记。瞥一眼来源,这似乎很简单。