2016-08-20 64 views
0

这对于我们已经知道的固定变量来说足够好。在Javascript脚本标签内创建动态Django模板变量

<script type="text/javascript"> 
    var a = "{{someDjangoVariable}}"; 
</script> 

我有一个场景,我想要动态创建变量。 e.g -

<script type="text/javascript"> 
for (i = 1, bar = bar , textb = ""; i <= bar ; i++) 
    { 
    for (j = 1, category = category , textc = ""; j <= category ; j++) 
    { 
     var a = "{{someDjangoVariable + i + j}}"; 
     // Do some more stuff here in UI - create input field dynamically 
    } 
    } 
</script> 

在我的字典查询可以说,我有这样的结构(2×2矩阵结构) - {'someDjangoVariable11' : 1, 'someDjangoVariable12' : 23, 'someDjangoVariable21': 256, 'someDjangoVariable22': 31}

请建议,如果有动态地创建变量的方式。

P.S - 矩阵的行和列可能会根据用户输入而变化。它可以是2 *34 * 31 * 5

+0

这个问题似乎背叛了模板和JS如何工作的基本误解,以及服务器端和前端代码之间的区别。 –

+0

@DanielRoseman:我已经编辑了这个问题,让我知道如果仍然无法理解。谢谢!! –

+0

我明白了这个问题;我所说的误解是你的。 –

回答

0

这种做法是行不通的,因为客户端变量不能达到回服务器。我建议发送一个服务器变量字典。

服务器端:

data = {'foo': '1', 'bar': '2'} 
return render('template.html', data) 

客户端:

<script> var data = {{data|json|safe}}; </script> 

然后你就可以用原来的字典键访问它的JavaScript。

+1

或者,您可以使用服务器端的json.dumps()将数据转换为字符串,然后将该数据作为字符串发送,从而不需要模板中的“json”过滤器。 –

+0

你能回答这个问题吗?我在这篇文章中并不十分清楚。 http://stackoverflow.com/questions/39067756/creating-dynamic-django-template-variables-names-inside-javascript-script-tag –