![](/img/trans.png)
[英]Using JavaScript Onclick Event to pass Data to views.py in Django?
[英]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
它用打印語句輸出:
[{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, "name": "Mac"}, {"slug": "vc", "id": 47, "name": "Virtual Console (Nintendo)"}
我將如何將其傳遞給 javascript?
如果 API 已經返回 JSON 編碼的響應,您可以只使用platformReq.text
。 將其傳遞給render_to_response
,您可以訪問模板中的 JSON 編碼字符串。
現在您可以設計您的 Javascript 模塊以使用對象進行配置,例如:
<script src="my_module.js"></script>
<script>
MyModule.initialize({{ json_encoded }})
</script>
示例(在您的模板內):
<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
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.