![](/img/trans.png)
[英]How can I convert the python class str to dictionary in javascript
[英]How can I convert Python dictionary to JavaScript hash table?
我已經傳遞給模板常規 Python 字典,我需要在里面
$(document).ready(function() {.. }
將該 Python 字典轉換為 JavaScript 字典。 我試過
var js_dict={{parameters}};
但我得到了錯誤( '而不是'並且所有字符串都以u'開頭)。 如何將 Python 字典轉換為 JavaScript hash 表?
Python 和 javascript 對於如何表示字典有不同的想法,這意味着您需要一個中間表示以便在它們之間傳遞數據。 最常見的方法是JSON ,這是一種簡單的輕量級數據交換格式。
使用python json 庫將您的 python 字典轉換(或轉儲)為 JSON 字符串。 然后在 javascript 中將 JSON 字符串解析為 javascript 字典。 (如果您使用的是 JQuery,則使用jQuery.parseJSON )
您可以將其轉換為 JSON 並在該模板中使用
在您的 python 代碼中執行
import json
...
...
return {'parameters': json.dumps(parameters)} #This data goes into your template
您可以將json.dumps(parameters)
與mark_safe()
一起使用
def custom_view(request):
...
return render(request, 'tmpl.html', {'parameters': mark_safe(json.dumps(parameters))})
使用mark_safe()
我在模板中獲得了未轉義的代碼。
我發現這對包含 [ ' ] 的字符串也有幫助
const convertPythonDictToJSON = function (data) {
let d = data.replace(new RegExp(`(?<=[a-zA-Z])'(?=[a-zA-Z ])`, "g"), '__')
d = d.replace(new RegExp("'", 'g'), '"')
d = d.replace(new RegExp("__", 'g'), "'")
d = d.replace(new RegExp("None", 'g'), 'null')
d = d.replace(new RegExp("False", 'g'), 'false')
d = d.replace(new RegExp("True", 'g'), 'true')
return JSON.parse(d)
}
正如其他人已經建議的那樣,在您的視圖中將您的字典轉換為 JSON,然后將 JSON 傳遞給模板上下文,這確實是您最好的方法,但是如果您想在模板中將其保留為 python 字典,您可以; 你只需要手動創建 javascript 版本(即你不能只用{{ parameters }}
轉儲它)
<script>
var js_dict = {
{% for k, v in parameters %}
"{{ k }}": "{{ v }}"{% if not forloop.last %},{% endif %}
{% endfor %}
}
</script>
一個受克里斯帕特下面的回答啟發的工作示例(注意區別):
42 var js_dict = [
43 {% for k, v in parameters.iteritems %}
44 ["{{ k }}","{{ v }}"] {% if not forloop.last %},{% endif %}
45 {% endfor %}
46 ];
在 Django 中處理模板中的變量時,默認 python 的 json 庫似乎對我不起作用。
您不需要發送字典。
這是我如何實現的:
視圖.py
def mess_opi(request):
data = Opi_calculated.objects.all()
return render(request,'hab_app/opi_student_portal.html', {'data': data})
我的模板(用於 morris.html):
data: [{% for item in data %}
{ "y": '{{ item.hostelName }}', "a": '{{ item.opi_value }}' }{% if not forloop.last %},{% endif %}
{% endfor %}],
如何通過在模板頁面上傳遞 object 而不是從 py 文件傳遞字典來處理這種情況,我在模板本身上創建了所需的字典。 像:
在我的 py 上:
def abc(request):
conf = assessment_master.objects.all()
return render(request, "enter_scheme.html", {'conf':conf})
在我的 django 模板上:在我的腳本標簽內:
<script>
var conf_dict_list = {};
{% for obj in conf_dict_list %}
conf_dict_list["{{ obj.short_name }}"] = "{{ obj.select }}"
{% endfor %}
alert(JSON.stringify(conf_dict_list));
// alert('key' in conf_dict_list); to check key is present in dict
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.