是否有一个函数返回模板中预期的字段列表?例如,我有以下模板:
hello i am {{ name }}. {% for i in docs %} i have doc {{ i }}
写在档案中。我想得到一个包含以下内容的词典:
{'name': 'str', 'docs': 'list'}
有类似的东西,或者我必须自己写吗?
答案 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标记。瞥一眼来源,这似乎很简单。