2010-08-23 59 views
9

有沒有什麼方法可以將模板標籤添加到javascript和css文件中?我會用它來傳遞任何東西,從url傳遞到媒體url鏈接(圖像路徑等)到基於用戶權限的條件javascript。Django - javascript和css文件中的模板標籤

我只是有一個想法,也許我可以提供它,就好像它是一個模板,但具有作爲我的JavaScript文件的網址。這是做這樣的事情的唯一方法嗎?如果是這樣,它可能不適用於我的媒體生成器,所以我可能想要一個更好的解決方案,如果有一個。

回答

0

你的想法是正確的路要走。如果你想利用Django的模板工具,那麼最簡單的方法就是將JS文件作爲模板提供。有關您的情況,請參見this question

0

您可以像模板一樣提供任何類型的內容,但不一定是HTML。但是,根據您的設置,您可能無法將其與其餘靜態內容一起提供。

如果您只想替換媒體網址等內容,則需要將這些模板「編譯」爲可供您使用的靜態文件。儘管如此,這對任何基於當前用戶權限的條件都無效。您需要編寫一個腳本來調用django.template.loader.render_to_string,並在每次部署或更改媒體URL時將結果寫入文件中。

0

對於JS文件內的動態內容,您必須創建一個模板,像其他人說的那樣。


但是你可以很容易附着JS和CSS文件使用django-sekizai特定的頁面模板。 (我用它作爲django-cms的一部分,但它也可以獨立運行。)

它允許您在常規頁面模板內部定義塊中所需的模板所需的靜態資源。 CSS有一個塊,JS有一個塊。這些塊可以打印在您的base.html中。它也處理重複的內容,所以你不必擔心多次添加相同的文件。請參閱usage document

有了這個系統,你不會發送任何受限制的JS或CSS,因爲django只會運行授權模板,並且內容永遠不會被添加到JS和CSS塊中。

1

如何定義內你的Django HTML模板JavaScript的變量,從CSS屬性腳本風格標記之間?我知道這聽起來像是一種黑客攻擊,但在我看來很整潔,因爲這可以讓你從一個地方控制你的動態變量。