将 Python 请求(在 Django views.py 中)Json 数据传递给 Javascript
Pass Python Requests (in Django views.py) Json Data to Javascript
我有这个 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 的 link 之后,我对其进行了调查,并将我的代码更新为:
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, "name": "Mac"}, {"slug": "vc", "id": 47, "name": "Virtual Console (Nintendo)"}
然后我如何将其传递给 javascript?
如果 API 已经 return 一个 JSON 编码的响应,您可以只使用 platformReq.text
。将其传递给 render_to_response
后,您可以访问模板中的 JSON 编码字符串。
现在您可以将 Javascript 模块设计为可配置对象,例如:
<script src="my_module.js"></script>
<script>
MyModule.initialize({{ json_encoded }})
</script>
查看此 template library 以将您的平台列表转换为模板中的 JSON 对象
示例(在您的模板中):
<script src="your_standalone_js.js">
<script>
var js_variable = {{platformList | jsonify }};
function_in_standalone_js(js_variable);
</script>
your_standalone_js.js:
var function_in_standalone_js = function(js_variable){
var options = js_variable['platforms'];
//What ever you need to do with options
};
我有这个 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 的 link 之后,我对其进行了调查,并将我的代码更新为:
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, "name": "Mac"}, {"slug": "vc", "id": 47, "name": "Virtual Console (Nintendo)"}
然后我如何将其传递给 javascript?
如果 API 已经 return 一个 JSON 编码的响应,您可以只使用 platformReq.text
。将其传递给 render_to_response
后,您可以访问模板中的 JSON 编码字符串。
现在您可以将 Javascript 模块设计为可配置对象,例如:
<script src="my_module.js"></script>
<script>
MyModule.initialize({{ json_encoded }})
</script>
查看此 template library 以将您的平台列表转换为模板中的 JSON 对象
示例(在您的模板中):
<script src="your_standalone_js.js">
<script>
var js_variable = {{platformList | jsonify }};
function_in_standalone_js(js_variable);
</script>
your_standalone_js.js:
var function_in_standalone_js = function(js_variable){
var options = js_variable['platforms'];
//What ever you need to do with options
};