Django模板将字符串解析为整数

时间:2013-07-11 12:29:39

标签: javascript python django django-templates

我有一个如下所示的列表:

[(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。< / p>

如何让客户端脚本意识到这是一个字符串而不是整数。

以下是代码的完整列表:

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')]

1 个答案:

答案 0 :(得分: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 }}' )