2010-07-27 49 views
10

我試圖訪問html頁面內聯javascript中的django模板變量,它工作正常。 但是,如果我包括js使用<script src="..>那麼它不工作。 是這個限制還是我做錯了什麼? 我真的很感謝你的幫助。從JavaScript訪問Django模板{{Variable}}

回答

12

包含的Javascript未被服務器上的Django模板處理器處理,因此不起作用。如果您需要通過模板將信息傳遞給包含的Javascript文件,請讓您的模板創建一個小的<script>塊,其中聲明瞭一些全局變量以包含這些模板變量。然後,您的純Javascript文件可以通過查找由該模板創建的全局對象<script>來獲取值。

+0

這個工作GR8 ...謝謝! – Cool 2010-07-28 03:03:26

5

Pointy的回答是正確的。我經常發現這種過濾器對於這種情況很有用:

@register.filter(name='json') 
def _json(obj): 
    #remember to make sure the contents are actually safe before you use this filter! 
    return safestring.mark_safe(json.dumps(obj)) 

然後在<script>標籤我可以做這樣的事情:

window.g_details = {{ details|json }}; 
+0

我將在我的js代碼中實現JSON時使用這個。謝謝 – Cool 2010-07-27 03:45:21

+0

@JasonPrado:爲什麼要這樣做? – Medorator 2014-05-26 11:24:45

+0

這個答案是4歲,所以我敢打賭,django現在有更好的解決方案。但我的想法是,能夠安全,輕鬆地將Python字典轉換爲JSON字典是很好的。 – 2014-05-26 17:50:57