2012-04-13 60 views
3

我試圖獲得一個Django項目模板的可視化表示,作爲一個層次結構。Django模板大綱

主要的想法是讓模板名稱的列表作爲默認模板裝載機械將返回(即履行TEMPLATE_DIRSTEMPLATE_LOADERS,等等),然後分析尋找{% block %}模板和{%擴展%}標籤,在爲了創建一個樹形結構。最後使用grapviz進行可視化。

我不確定這是否可行。但是剛開始的時候,我怎麼能按照我描述的方式加載模板呢?

或者,也許有類似的東西存在嗎?

回答

1

正常情況下,模板在線查找名稱,每個可能使用的模板都沒有根條目。

因此,如果您想要grep項目中所有使用的模板,則需要掃描TEMPLATE_LOADERS中可能檢查的每個加載器所在的位置,以生成可能的條目,以便稍後進行從下至上的檢查。這很難,一些加載器的後端甚至可能不允許通過目錄操作。
或者你可以解析INSTALLED_APPS中的視圖和url文件來grep模板名稱,但是這隻能用w/hard-coded的模板名稱,並且更難。 此外,可能有模板從硬編碼字符串加載...

對於給定的模板名稱,它更容易加載模板並檢查其中的節點,就像您的想法一樣。你可以檢查django.template.base知道它是如何工作的。

此外,您可以利用django-debug-toolbar來顯示用於請求的模板。而且,IMO保持模板結構平坦,簡單,因此更容易實現。

+0

我明白這不是一件容易的事情,即使是因爲模板可以通過條件包含在其他模板中,由於事先不知道,所以無法處理。 – Paolo 2012-04-14 14:37:54