将Python请求(在Django views.py中)Json数据传递给Javascript
我有一段python代码,它获取json并对其进行解析:将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
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
};