2013-07-11 24 views
0

我看上去像一個列表如下:Django的模板解析字符串作爲整數

[(2,'09-07-2014')] 

當我使用在客戶端我可以訪問它訪問此列表:

{% for item in list %} 
console.log({{ item.0 }} + ' and ' + {{ item.1 }}) 
{% endfor %} 

問題是item.0返回2因爲它應該但item.1返回-2012作爲9-7-2014整數表示將計算爲-2012

如何讓客戶端腳本實現這是一個字符串不是整數。

下面是代碼的整體上市:

chartdata= getChartData(request.session['userphone']) 
log.debug(chartdata) 
return render(request,'users.html',{'table':table,'topics':request.session['topics'],'profilepic':request.session['profilepic'],'chartdata':chartdata,'time':str(time.time())}) 

log.debug(chartdata)返回我的日誌文件如下:

[11/Jul/2013 18:02:15] DEBUG [karnadash.views:179] [(85, '2013-07-08'), (120, '2013-07-08'), (205, '2013-07-08'), (305, '2013-07-08'), (405, '2013-07-08'), (505, '2013-07-08'), (547, '2013-07-09'), (564, '2013-07-09'), (581, '2013-07-09'), (607, '2013-07-09'), (624, '2013-07-09'), (659, '2013-07-09'), (694, '2013-07-09'), (711, '2013-07-09'), (737, '2013-07-09'), (754, '2013-07-09'), (771, '2013-07-09'), (871, '2013-07-09')] 
+0

據我所知,Django不嘗試在這種情況下將該字符串解釋爲整數。無論如何,這絕不會發生在我身上。這種解釋可能發生在別的地方。正如你已經用'javascript'標記的那樣,即使你的queston中沒有JS,我也指着一個手指。 ;-) –

+0

我向你顯示我的數據,就像它出現在我的日誌文件中一樣。 – Sohaib

+0

我不懷疑你的日誌文件是'-2012'。我懷疑上面的代碼是否會發生這種情況。它必須發生在之前。在這種情況下,Python會很樂意使字符串不在整數中。但它不會使字符串中的整數,特別是不是字符串'09 -07-2014',這是Python眼中無效的整數。 –

回答

3

Django是不這樣做,JavaScript是,因爲你有沒有告訴JS你正在處理一個字符串。如果你看的HTML源代碼,你會看到到底發生了什麼 - 它會是這個樣子:

console.log(2 + ' and ' + 09-07-2014) 

有不在身邊的日期值的任何報價,因爲你還沒有把任何在那裏,所以JS認爲這是一個表達。它很容易解決:

console.log('{{ item.0 }}' + ' and ' + '{{ item.1 }}') 

,或者甚至更好,因爲JS不關心的事實,他們在Django的單獨項目:

console.log('{{ item.0 }} and {{ item.1 }}') 
+0

Ohh。Works perfect!Thanks。Dunno whhy我沒有想到模板的事實在js開始之前得到解決。 – Sohaib