将Python请求(在Django views.py中)Json数据传递给Javascript

将Python请求(在Django views.py中)Json数据传递给Javascript,javascript,python,json,django,python-requests,Javascript,Python,Json,Django,Python Requests,我有一段python代码,它获取json并对其进行解析: from django.http import HttpResponse import json, requests def find(request): context = {} platformUrl = 'https://www.igdb.com/api/v1/platforms' platformReq = requests.get(platformUrl, headers={'Authorization

我有一段python代码,它获取json并对其进行解析:

from django.http import HttpResponse
import json, requests

def find(request):
    context = {}
    platformUrl = 'https://www.igdb.com/api/v1/platforms'
    platformReq = requests.get(platformUrl, headers={'Authorization': 'Token token="1234"'})
    platformData = json.loads(platformReq.text)
    platformList = platformData['platforms']
    print platformList
它会将其与打印语句一起输出:

[{u'slug':u'saturn',u'id':32,u'name':u'Sega saturn'},{u'slug':u'mac',u'id':14,u'name':u'mac'},{u'slug':u'vc',u'id':47,u'name':u'Virtual Console(任天堂)}

我希望将该数据传递给javascript,并将json中的ID和名称放入该javascript中。(selectize.js)这可能需要某种类型的for循环,可以是javascript,甚至是djangos?:

    options: [
    {id: 1, title: 'Spectrometer'},
    {id: 2, title: 'Star Chart'},
    {id: 3, title: 'Electrical Tape'}
]
谢谢

编辑: 根据@satoru的链接,我查看了它,并将我的代码更新为:

    from django.http import HttpResponse
import json, requests

def find(request):
    context = {}
    platformUrl = 'https://www.igdb.com/api/v1/platforms'
    platformReq = requests.get(platformUrl, headers={'Authorization': 'Token token="1234"'})
    platformList = json.dumps(platformData)

    print platformList
    return render_to_response('find.html',{'platformList':platformList})
它现在输出以下内容:

{“平台”:[{“slug”:“saturn”,“id”:32,“name”:“Sega saturn”},{“slug”:“mac”,“id”:14,“name”:“mac”},{“slug”:“vc”,“id”:47,“name”:“虚拟控制台(任天堂)”}


然后如何将其传递到javascript中?

如果API已经返回JSON编码的响应,您可以使用
platformReq.text
。将其传递到
render\u to\u response
后,您可以访问模板中的JSON编码字符串

现在,您可以将Javascript模块设计为可配置对象,例如:

<script src="my_module.js"></script>
<script>
   MyModule.initialize({{ json_encoded }})
</script>

初始化({json_encoded}})
查看此项可将平台列表从模板中转换为JSON对象

示例(在模板中):


@satoru的可能重复项我不知道这个问题如何适用于我的问题。你可以创建一个只包含你想要的密钥的新dict,然后用JSON编码。@satoru我已经有JSON格式的dict了,不是吗?我使用python请求获得了数据,并希望将已经用JSON获得的数据传递到javascript文件。或者我误解了什么吗?@satoru我进一步查看了你的链接,你能看一下我的编辑并告诉我吗。ThanksIt已经是JSON格式(请参阅:platformList和输出内容),我想将我正在解析的JSON从API传递到我上面提供的javascript代码中。当它传递到模板时,您尝试将javascript变量设置为等于它时,它会将其转换为字符串。Jsonify库允许您在模板中设置javascript变量,如下所示:
var js_variable={{platformList | jsonify};
我想用
json.dumps(platformData)
将它转换成json。现在我的控制台输出是:
{“平台”:[{“slug”:“saturn”,“id”:32,“name”:“Sega saturn”},{“slug”:“mac”,“id”:14,“name”:“mac”},{“slug”:“vc”,“id”:47,“name”:“虚拟控制台(任天堂)”}
这不是JSON吗?它是JSON,但当您将它设置为Javascript变量时,它会转换回字符串。jsonify修复了这一点。好的,我现在明白了。如果我要将它放在一个独立的JS文件中,我会怎么做?而且,一旦它被放在Javascript中,我该如何使JSON用它的值填充这个Javascriptlues?Ex:Platform List JSON
{“platforms”:[{“slug”:“saturn”,“id”:32,“name”:“Sega saturn”},{“slug”:“mac”,“id”:14,“name”:“mac”},{“slug”:“vc”,“id”:47,“name”:“虚拟控制台(任天堂)”}
进入这个JS,{id:47,标题:'虚拟控制台(任天堂)}]我不太明白,“my_module.js”是从哪里来的?
    <script src="your_standalone_js.js">
    <script>
        var js_variable = {{platformList | jsonify }};
        function_in_standalone_js(js_variable);
    </script>
    var function_in_standalone_js = function(js_variable){
        var options = js_variable['platforms'];
        //What ever you need to do with options
    };