我想将一个数组传递给模板,然后通过JavaScript使用它。
在我的 views.py 中,我有:
arry1 = ['Str',500,20]
return render_to_response('test.html', {'array1': arry1})
在我的模板中:
var array1 = {{ array1 }};
但是当我访问网站时,它输出:
var array1 = ['Str',500,20];
我需要改变什么?
答案 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)