如何将 Python 字典转换为 JavaScript 哈希表
How can I convert Python dictionary to JavaScript hash table?
>我已经传递到模板常规Python字典,我需要在里面
$(document).ready(function() {.. }
将该 Python 字典转换为 JavaScript 字典。我试过像
var js_dict={{parameters}};
但是我得到了错误( ' 而不是 ' 并且所有字符串都以 u' 开头)。 如何将 Python 字典转换为 JavaScript 哈希表?
Python 和 javascript 对如何表示字典都有不同的想法,这意味着你需要一个中间表示才能在它们之间传递数据。最常见的方法是 JSON,这是一种简单的轻量级数据交换格式。
使用 python json 库将 python 字典转换(或转储)为 JSON 字符串。然后在javascript中将JSON字符串解析为javascript字典。 (如果你使用的是JQuery,那么使用jQuery.parseJSON)
您可以将其转换为 JSON 并在该模板中使用它
在你的蟒蛇代码中做
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>
一个受Chris Patt以下答案启发的工作示例(请注意差异):
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 lib 似乎对我不起作用。
您不需要发送字典。
以下是我如何实现这一点:
views.py
def mess_opi(request):
data = Opi_calculated.objects.all()
return render(request,'hab_app/opi_student_portal.html', {'data': data})
我的模板(莫里斯.html):
data: [{% for item in data %}
{ "y": '{{ item.hostelName }}', "a": '{{ item.opi_value }}' }{% if not forloop.last %},{% endif %}
{% endfor %}],
如何处理这种情况,通过在模板页面上传递对象而不是从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>
- 如何在JavaScript中实现哈希表
- 用JavaScript中的循环传递哈希表/字典
- 将 Javascript 哈希表用于多个 If Thens
- 用于跟踪购物车可用性的Javascript数组/对象/哈希表
- 使用 JavaScript 中的对象的哈希表功能
- 如何在 JavaScript 中动态创建哈希表
- 如何在 JavaScript 中实现哈希表
- 在引擎盖下,是Javascript对象哈希表
- 如何将 Python 字典转换为 JavaScript 哈希表
- 你如何观察 Knockout 中的 JavaScript 哈希表
- 与哈希表相比,通过循环访问数组中对象的Javascript优化
- 带有键/值的Javascript测试哈希表
- 如何在没有任何名称空间冲突的情况下获得Javascript中的哈希表或记录类型
- 将动态键、值对添加到JavaScript数组或哈希表中
- 如何获取 JavaScript 哈希表计数
- 如何在Javascript中从哈希表中提取唯一键
- 使用Javascript创建哈希表样式的集合
- 在Javascript中使用哈希表:一个数组的数组就足够了
- Javascript哈希表问题
- 如何创建一个Javascript哈希表/关联数组原型