我試圖獲得一個Django項目模板的可視化表示,作爲一個層次結構。Django模板大綱
主要的想法是讓模板名稱的列表作爲默認模板裝載機械將返回(即履行TEMPLATE_DIRS
,TEMPLATE_LOADERS
,等等),然後分析尋找{% block %}
模板和{%擴展%}標籤,在爲了創建一個樹形結構。最後使用grapviz進行可視化。
我不確定這是否可行。但是剛開始的時候,我怎麼能按照我描述的方式加載模板呢?
或者,也許有類似的東西存在嗎?
我試圖獲得一個Django項目模板的可視化表示,作爲一個層次結構。Django模板大綱
主要的想法是讓模板名稱的列表作爲默認模板裝載機械將返回(即履行TEMPLATE_DIRS
,TEMPLATE_LOADERS
,等等),然後分析尋找{% block %}
模板和{%擴展%}標籤,在爲了創建一個樹形結構。最後使用grapviz進行可視化。
我不確定這是否可行。但是剛開始的時候,我怎麼能按照我描述的方式加載模板呢?
或者,也許有類似的東西存在嗎?
正常情況下,模板在線查找名稱,每個可能使用的模板都沒有根條目。
因此,如果您想要grep項目中所有使用的模板,則需要掃描TEMPLATE_LOADERS中可能檢查的每個加載器所在的位置,以生成可能的條目,以便稍後進行從下至上的檢查。這很難,一些加載器的後端甚至可能不允許通過目錄操作。
或者你可以解析INSTALLED_APPS中的視圖和url文件來grep模板名稱,但是這隻能用w/hard-coded的模板名稱,並且更難。 此外,可能有模板從硬編碼字符串加載...
對於給定的模板名稱,它更容易加載模板並檢查其中的節點,就像您的想法一樣。你可以檢查django.template.base
知道它是如何工作的。
此外,您可以利用django-debug-toolbar來顯示用於請求的模板。而且,IMO保持模板結構平坦,簡單,因此更容易實現。
我明白這不是一件容易的事情,即使是因爲模板可以通過條件包含在其他模板中,由於事先不知道,所以無法處理。 – Paolo 2012-04-14 14:37:54