我在python中有dict
,如下所示:
d = {'key1': .98, 'key2': 'some_str',
#...
}
在此词典中,某些键将映射到float
,其他键将映射到str
在我的HTML中,我正在执行以下操作:
html_dict = {
{% for k, v in my_dict.items %}
{{ k }}: "{{ v }}",
{% endfor %}
};
然而,这种方法也将引号包装在引号中,这是我不想要的。但是,如果我不知道用引号将它们包装起来,那么HTML并不能理解它们是字符串值。我理想地喜欢以下内容:
html_dict = {
{% for k, v in my_dict.items %}
{% if check_v_is_str %}
{{ k }}: "{{ v }}",
{% else %}
{{ k }}: {{ v }},
{% endif %}
{% endfor %}
};
答案 0 :(得分:7)
不要这样做。当已经存在Python和JS都知道的明确定义的结构(即JSON)时,您手动尝试复制JS数据结构。改用它。在视图中将dict转换为JSON,并将其传递给可以直接输出的模板。
答案 1 :(得分:0)
您可以定义名为" check_v_type"的过滤器。按如下方式调用模板:
{% if v|check_v_type == 'str' %}
但我不认为这会产生良好的逻辑。通常,您希望避免模板中的函数调用。相反,在您的视图中,您可以创建以下形式的元组字典:
d = {'key1': (.98, False), 'key2': ('some_str', True), #...}
然后,您可以在每个元组中使用布尔值来决定如何格式化HTML中的值。