2009-04-11 96 views
27

我想将数组传递给模板,然后通过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]; 

什么我必须改变吗?

+0

请更具体一些。这“显然”如何破坏你的代码? JavaScript看起来对我有效。 – 2009-04-11 12:04:50

+0

当我第一次发布的问题stackoverflow重新格式没有空间'。 我认为它必须在JavaScript中工作(或者至少我认为它是以这种方式工作的。但不知何故出现(再次没有空格) – Christian 2009-04-11 12:22:03

回答

60

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

+0

它的工作原理。谢谢。 – Jijoy 2011-07-28 18:27:51

+0

对我(和其他人?)特别有用?)从App Engine Django版本0.96升级到版本1.2:在版本1.2中,您必须使用安全筛选器,而使用0.96则仅用于工作... – DanDan 2011-10-25 20:38:48

16

如上所述,您可以使用| 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}}

6

在Django中:

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

,并通过 “json_list” 在上下文中

在JS:

var YOUR_JS_LIST = {{YOUR_LIST|safe}}; 
0

它可以通过Django的核心串行器来完成。所有你需要做的就是在json中序列化你的数据,并把它传递给模板。

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

在您的模板中,将此列表保存到JavaScript变量中。

var list = {{data|safe}} 
相关问题