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

时间:2015-08-27 23:35:56

标签: 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': 'Token token="1234"'})
    platformData = json.loads(platformReq.text)
    platformList = platformData['platforms']
    print platformList

它使用print语句输出:

  

[{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(Nintendo)'}

我想将这些数据传递给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})

现在输出:

  

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

我如何将其传递给javascript?

1 个答案:

答案 0 :(得分:1)

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

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

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