如何将Django中的数组传递给模板并通过JavaScript使用它
问题描述:
我想将数组传递给模板,然后通过JavaScript使用它。如何将Django中的数组传递给模板并通过JavaScript使用它
在我views.py我:
arry1 = ['Str',500,20]
return render_to_response('test.html', {'array1': arry1})
而且在我的模板:
var array1 = {{ array1 }};
但是当我访问网站它输出:
var array1 = ['Str',500,20];
什么我必须改变吗?
答
如上所述,您可以使用| safe过滤器,这样Django不会清理数组并将其保留为是。
另一种选择,也许长期来看更好的方法是使用simplejson模块(包含在django中)将Python列表格式化为一个JSON对象,在该对象中可以吐回到Javascript中。您可以循环浏览JSON对象,就像您真正使用任何数组一样。
从django.utils导入simplejson
列表= [1,2,3, '字符串1']
json_list = simplejson.dumps(列表)
选择render_to_response(TEMPLATE_NAME,{ 'json_list':json_list})
而且在你的JavaScript,只是{{json_list}}
答
在Django中:
from django.utils import simplejson
json_list = simplejson.dumps(YOUR_LIST)
,并通过 “json_list” 在上下文中
在JS:
var YOUR_JS_LIST = {{YOUR_LIST|safe}};
答
它可以通过Django的核心串行器来完成。所有你需要做的就是在json中序列化你的数据,并把它传递给模板。
data = serializers.serialize("json", <list>)
return render(request, 'view.html', {'data':data})
在您的模板中,将此列表保存到JavaScript变量中。
var list = {{data|safe}}
请更具体一些。这“显然”如何破坏你的代码? JavaScript看起来对我有效。 – 2009-04-11 12:04:50
当我第一次发布的问题stackoverflow重新格式&#3;没有空间'。 我认为它必须在JavaScript中工作(或者至少我认为它是以这种方式工作的。但不知何故出现&#3;(再次没有空格) – Christian 2009-04-11 12:22:03