簡體   English   中英

將 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

它用打印語句輸出:

[{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>

查看此模板庫以將您的平台列表從模板中轉換為 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
    };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM