2012-05-30 118 views
0

我使用下面的代碼在我的Django視圖Django的 - 渲染到響應

data = {'d':['a','b','c']} 
return render_to_response('login/invalid.html',data) 

現在我想我invalid.html頁面有代碼列表['a','b','c']轉換爲JavaScript變量數組,這樣我可以填充一個下拉菜單。但我不能將這些元素轉換成一個JavaScript數組。

var arr = "{{ 'd' }}" 

花費清單作爲一個字符串,而不是作爲一個數組 請幫


此代碼創建一個下拉使用數組

<select > 
       <script type="text/javascript"> 

       {% autoescape off %} 
       var veg = {{ d }} 
       {% endautoescape %} 

       for (i = 0; i < veg.length; i++) { 
        document.write('<option>') 
        document.write(veg[i])     
        document.write('</option>')      
       } 
      </script>    
     </select> 

   d = json.dumps(['a','b','c']) 
       #d = serializers.serialize("json", ['a','b','c']) 
       #data={"d":json.dumps(['1','2','3','4'])} 
       #data={} 
       data = {'d':d} 

       #data["read"] = json.dumps(",".join(['abc'])) 

       #return render_to_response('login/invalid.html',json.dumps(data),context_instance=RequestContext(request)) 

       return render_to_response('login/invalid.html',data,context_instance=RequestContext(request)) 

回答

1

你可能想serialize your data爲JSON:

import json 

d = json.dumps(['a','b','c']) 
# now d actually has a json string 
data = {'d':d} 
return render_to_response('login/invalid.html',data) 

然後在你的模板

// arr now holds the list 
{% autoescape off %} 
var arr = {{ d }} 
{% endautoescape %} 
console.log(arr); 
arr.doSomething(); 
+0

的串行線給出了錯誤「‘海峽’對象有沒有屬性‘_meta’」 ...... –

+0

哎呀,糾正。你可以使用json來處理不是django模型的簡單數據類型。 – BenjaminGolder

+0

它的工作原理。 非常感謝! –

1

通過將列表轉換爲JSON並將其輸出到模板中,根據需要標記爲安全。

+0

數據= { 'd': 'A', 'B', 'C']} .... j = json.dumps(data)... 在j中使用render來回應 如何在javascript代碼中訪問它? –

+0

您想對列表進行編碼,而不是字典。 'data = {'d':json.dumps(...)}'...'var arr = {{d}}' –

+0

我已經發布代碼來生成下拉..但是當我使用veg = {{d}}它不起作用 –