2013-11-26 34 views
0

我的jquery代碼在html中工作,但當我在外部js文件中移動代碼時無法工作。 我想通了,大概的Django無法呈現Django if語句在外部jquery文件中

{% if something %} 

爲什麼?

在Django

your_flag = 'foo' 
render(request, '[template]', {'flag': your_flag}) 

在:

+0

因爲當django調用一個'render'方法時,它會得到相關的html文件並查找所有變量和函數(以及任何是python和django)並設置變量,進行條件檢查並將結果渲染爲結果。 :在這種情況下,你的js永遠不會由django渲染(所以通過python)。 – FallenAngel

回答

2

一般我們通過在python上下文標誌,然後使其作爲隱藏的輸入或一個隱藏的元素,最後通過jQuery訪問它的值模板,

<input type="hidden" name="flag" value="{{ flag }}" /> 
在js文件

var flag = $("[name='flag']").val() 
if (flag === 'foo') { 
    // then do a lot of things 
} 
+0

好的解決方案!感謝這:) –

+0

把手也許是另一種解決方案,你可以試試看。 – iMom0

0

它不能在.js文件中工作,因爲.js文件是「按原樣」加載的,而不是經過處理的模板。因此,任何模板代碼都會逐字加載,並且可能會導致js文件中的解析錯誤。檢查螢火蟲或鉻開發工具。

如果你想讓你的js被模板系統處理,你需要使用{% include "subtemplate.js" %},但是最終你會得到內聯代碼。否則,你需要按照@ iMom0的方式來實現。