2009-04-11 22 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}} 
相關問題