![](/img/trans.png)
[英]How do I pass Python list on Django template and use it in JavaScript?
[英]How to pass an array in Django to a template and use it with JavaScript
我想將數組傳遞給模板,然后通過 JavaScript 使用它。
在我的views.py中,我有:
arry1 = ['Str',500,20]
return render_to_response('test.html', {'array1': arry1})
在我的模板中:
var array1 = {{ array1 }};
但是當我訪問該網站時,它會輸出:
var array1 = ['Str',500,20];
我必須改變什么?
嘗試使用{{ array1|safe }}
看看是否有什么不同。 我還沒有測試過這個,所以如果這是不正確的,我希望我不會被低估......
如前所述,您可以使用|safe
過濾器,這樣 Django 就不會清理數組並保持原樣。
另一種選擇,從長遠來看可能更好的選擇是使用simplejson
模塊(它包含在 django 中)將您的 Python 列表格式化為一個 JSON 對象,您可以在該對象中返回 Javascript。 您可以像遍歷任何數組一樣遍歷 JSON 對象。
from django.utils import simplejson
list = [1,2,3,'String1']
json_list = simplejson.dumps(list)
render_to_response(template_name, {'json_list': json_list})
在你的 Javascript 中,只需{{ json_list }}
在姜戈:
from django.utils import simplejson
json_list = simplejson.dumps(YOUR_LIST)
並在上下文中傳遞“json_list”
在JS中:
var YOUR_JS_LIST = {{YOUR_LIST|safe}};
不確定何時將其添加到 Django,相同結果的候選是json-script :
{{ value|json_script:"hello-data" }}
如果 value 是字典 {'hello': 'world'},輸出將是:
<script id="hello-data" type="application/json">{"hello": "world"}</script>
可以像這樣在 JavaScript 中訪問結果數據:
const value = JSON.parse(document.getElementById('hello-data').textContent);
在 4.0 之后的 Django 版本中,上述情況中的 ID 和“hello-data”將是可選的。
它可以由 django 核心序列化程序完成。 您需要做的就是在 json 中序列化您的數據,然后將其傳遞給模板。
data = serializers.serialize("json", <list>)
return render(request, 'view.html', {'data':data})
在您的模板中,將此列表保存到 javascript 變量中。
var list = {{data|safe}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.