Django - 呈现回应

时间:2012-05-30 09:33:57

标签: django django-templates django-views

我在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))

2 个答案:

答案 0 :(得分:2)

你可能希望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();

答案 1 :(得分:1)

通过json将列表转换为JSON并将其输出到模板中,根据需要将其标记为安全。