2012-09-07 68 views
0

是否有一個函數返回模板中預期的字段列表?例如,我有以下模板:Django模板系統 - 從模板中獲取字段

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

寫入文件。我想得到一個字典,其中包含:

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

是否有類似的東西,或者我必須自己寫它?

回答

2

據我所知,沒有....

你的模板中包含一些HTML和一些佔位(可能是別的東西)。 render_to_template做的是,它得到一個上下文字典,其中包含一些密鑰和附加到該密鑰和模板的一些數據。然後,它會將值要根據自己的鍵名的佔位符,執行一些循環或條件檢查,如果您的模板包含像{% if...%}{%for....%}

控制流如果TEMPLATE_DEBUG在您的設置關閉,如果有一個佔位符在你的上下文詞典中沒有匹配的鍵,那麼它將跳過該詞,而不會產生任何錯誤。

另外,如果你傳遞一個表單對象到您的模板並直接將物件放置到模板,因爲它是(無需單獨調用每個字段)[例如:{{form}}{{form.as_p}}那麼Django會檢查字段在表格上和訂貨量大他們as it is shown here。在這種情況下,您只會知道使用了該表單。您必須檢查您的Form定義中使用哪些字段。

如果你通過這個過程看,你必須知道你需要放置你的上下文字典。你可以編寫一個解析器來解析你的模板,但是這比檢查模板和找到丟失的數據困難得多,我想。

0

內置{%debug%}標記可能對您有所幫助,但是我不知道我是否完全理解您的要求。基本上,如果您將調試標籤放入您的模板中,它將打印出大量有用的東西,包括模板中可用的所有變量。

也許你可以看看debug tag的源代碼(因爲它們可以訪問那裏的所有變量),並基於此構建一個custom tag標記。看一看源代碼,這似乎很容易做到。