是否有一個函數返回模板中預期的字段列表?例如,我有以下模板:Django模板系統 - 從模板中獲取字段
hello i am {{ name }}. {% for i in docs %} i have doc {{ i }}
寫入文件。我想得到一個字典,其中包含:
{'name': 'str', 'docs': 'list'}
是否有類似的東西,或者我必須自己寫它?
是否有一個函數返回模板中預期的字段列表?例如,我有以下模板:Django模板系統 - 從模板中獲取字段
hello i am {{ name }}. {% for i in docs %} i have doc {{ i }}
寫入文件。我想得到一個字典,其中包含:
{'name': 'str', 'docs': 'list'}
是否有類似的東西,或者我必須自己寫它?
據我所知,沒有....
你的模板中包含一些HTML和一些佔位(可能是別的東西)。 render_to_template
做的是,它得到一個上下文字典,其中包含一些密鑰和附加到該密鑰和模板的一些數據。然後,它會將值要根據自己的鍵名的佔位符,執行一些循環或條件檢查,如果您的模板包含像{% if...%}
或{%for....%}
控制流如果TEMPLATE_DEBUG
在您的設置關閉,如果有一個佔位符在你的上下文詞典中沒有匹配的鍵,那麼它將跳過該詞,而不會產生任何錯誤。
另外,如果你傳遞一個表單對象到您的模板並直接將物件放置到模板,因爲它是(無需單獨調用每個字段)[例如:{{form}}
或{{form.as_p}}
那麼Django會檢查字段在表格上和訂貨量大他們as it is shown here。在這種情況下,您只會知道使用了該表單。您必須檢查您的Form
定義中使用哪些字段。
如果你通過這個過程看,你必須知道你需要放置你的上下文字典。你可以編寫一個解析器來解析你的模板,但是這比檢查模板和找到丟失的數據困難得多,我想。
內置{%debug%}標記可能對您有所幫助,但是我不知道我是否完全理解您的要求。基本上,如果您將調試標籤放入您的模板中,它將打印出大量有用的東西,包括模板中可用的所有變量。
也許你可以看看debug tag的源代碼(因爲它們可以訪問那裏的所有變量),並基於此構建一個custom tag標記。看一看源代碼,這似乎很容易做到。