如何将Django中的数组传递给模板并将其与JavaScript一起使用

时间:2009-04-11 12:02:07

标签: javascript django django-templates

我想将一个数组传递给模板,然后通过JavaScript使用它。

在我的 views.py 中,我有:

arry1 = ['Str',500,20]
return render_to_response('test.html', {'array1': arry1})

在我的模板中:

var array1 = {{ array1 }};

但是当我访问网站时,它输出:

var array1 = ['Str',500,20];

我需要改变什么?

5 个答案:

答案 0 :(得分:71)

尝试使用{{ array1|safe }},看看是否有任何区别。我没有对此进行过测试,所以我希望如果这是不正确的话我也不会太过低估......

答案 1 :(得分:16)

如前所述,您可以使用|safe过滤器,因此Django不会清理数组并保持原样。

另一个选项,可能是长期更好的选择是使用simplejson模块(它包含在django中)将Python列表格式化为JSON对象,您可以在其中吐回Javascript。您可以像使用任何数组一样遍历JSON对象。

from django.utils import simplejson
list = [1,2,3,'String1']
json_list = simplejson.dumps(list)
render_to_response(template_name, {'json_list': json_list})

在您的Javascript中,只需{{ json_list }}

答案 2 :(得分:6)

在Django中:

from django.utils import simplejson
json_list = simplejson.dumps(YOUR_LIST)

AND PASS“json_list”IN CONTEXT

IN JS:

var YOUR_JS_LIST = {{YOUR_LIST|safe}}; 

答案 3 :(得分:0)

可以通过django核心序列化程序完成。您需要做的就是在json中序列化数据,然后将其传递给模板。

data = serializers.serialize("json", <list>)
return render(request, 'view.html', {'data':data})

在您的模板中将此列表保存为javascript变量。

var list = {{data|safe}}

答案 4 :(得分:0)

只需尝试将 var array1 = {{ array1 }}; 替换为 var array1 = '{{ array1|safe }}'; 。我不知道为什么,但这对我有用。 enter image description here