将Django模板中的JSON传递给独立的Javascript文件

时间:2015-08-28 13:26:51

标签: javascript json django django-templates django-views

我在views.py中有以下代码:

from django.shortcuts import render
from django.shortcuts import render_to_response
from django.http import HttpResponse
import json, requests

platformReq = requests.get(platformUrl, headers={'Authorization': 'Token token="1234"'})

platformData = json.loads(platformReq.text)
return render_to_response('find.html',{'platformList':platformData})

在我的模板文件中,我有:

<script src="{% static "js/standalone.js" %}" type="text/javascript"></script>
  <script>
    {# this is where it fetches the json and formats it correctly #}
    var js_variable = {{platformList | jsonify}};
    console.log(js_variable);
    function_in_standalone_js(js_variable);
</script>

JSON从console.log()正确输出,但是我收到错误:

  

ReferenceError:未定义function_in_standalone_js

在我的独立Javascript中:

var function_in_standalone_js = function(js_variable)
{
var options = js_variable['platforms'];
console.log(options)
}

这是输出的内容,以及console.log()给出的内容(有3个以上,但我不想粘贴整个内容):

  

{“platforms”:[{“slug”:“saturn”,“id”:32,“name”:“Sega Saturn”},{“slug”:“mac”,“id”:14,“名称“:”Mac“},{”slug“:”vc“,”id“:47,”name“:”虚拟控制台(Nintendo)“}}}

提前致谢!

2 个答案:

答案 0 :(得分:2)

由于模板中JS的加载时间不同,您应该在$(document).ready(function(){...})中包装内联JS,以确保它只在文档的其余部分加载后运行,包括外部JS文件。

<script>
    $(document).ready(function(){
      var js_variable = {{platformList | jsonify}};
      console.log(js_variable);
      function_in_standalone_js(js_variable);
    });
</script>

答案 1 :(得分:0)

可能是你的standalone.js在模板中的代码后加载,因此错误