簡體   English   中英

如何將 Django 中的數組傳遞給模板並將其與 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}}; 

只需嘗試替換var array1 = {{ array1 }}; with var array1 = '{{ array1|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.

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