如何:django模板传递数组并在javascript中使用它?

Luk*_*kas 4 python django google-app-engine templates

好的,这是一个问题,我有一个html模板,看起来像这样:

<script>
    $(function() {
        var vCountries = {{ visitedCountriesList }};
    });
</script>

<..>

{{ visitedCountriesList }}
Run Code Online (Sandbox Code Playgroud)

从服务器我传递一个列表到这个项目,但渲染后它看起来像这样:

<script>
    $(function() {
            var vCountries = ;
        });
    </script>

    <..>

    [u'Afghanistan', u'Japan', u'United Arab Emirates']
Run Code Online (Sandbox Code Playgroud)

所以我的问题是 - 为什么?以及如何将其传递给javascript ...?

Bia*_*cki 8

问题是数组的字符串表示形式不是有效的JavaScript.在u'一开始是没有好处的.这个:

[u'Afghanistan', u'Japan', u'United Arab Emirates']
Run Code Online (Sandbox Code Playgroud)

应该这样:

['Afghanistan', 'Japan', 'United Arab Emirates']
Run Code Online (Sandbox Code Playgroud)

你有两个选择.在view函数中,将其编码为JSON:

render_to_response('my_view.html', {
    'visitedCountriesList' : json.dumps(visitedCountriesList)
})
Run Code Online (Sandbox Code Playgroud)

或者创建一个可以使用的过滤器.请看这个例子.那么用法就是:

<script>
  $(function() {
    var vCountries = {{ visitedCountriesList|jsonify }};
  });
</script>
Run Code Online (Sandbox Code Playgroud)