手串数组到django模板并在d3中使用它

时间:2014-05-13 15:29:43

标签: javascript python django d3.js

我想将一个stringarray从我的views.py移交给模板,并将这个字符串用于D3。

views.py:

def index(request):
    template = loader.get_template("myApp/index.html")
    data = ["a","b","c"]
    context = RequestContext(request,{"data":data})
    return HttpResponse(template.render(context))

的index.html:

<html>

<head>
    <title>Some project</title>
    <script type="text/javascript" src="http://d3js.org/d3.v3.min.js"></script>
</head>

<body>
    <h1>Some project visualisation</h1>

    <script type="text/javascript">

        var dataArray = {{ data }};
...

at&#34; var dataArray = {{data}};&#34;我收到语法错误。 我在浏览器控制台和我的dataArray中查找了这个 看起来像这样:

var dataArray = [&#39;a&#39;,&#39;b&#39;,&#39;c&#39;]

我也尝试过使用json.dumps(data),但是我得到了类似的dataArray:

var dataArray = [&quot;a&quot;,&quot;b&quot;,&quot;c&quot;]

1 个答案:

答案 0 :(得分:1)

您要搜索的是“安全”过滤器:

context = RequestContext(request,{"data":json.dumps(data)})

...

<script type="text/javascript">
    var dataArray = {{ data | safe }};

https://docs.djangoproject.com/en/dev/ref/templates/builtins/#std:templatefilter-safe

如果您在javascript中更频繁地使用变量,那么转换off autoescape

可能是有意义的