我在尝试解析django模板中的orderddict时遇到了麻烦。
这是一个例子:
OrderedDict([
(u'header-1510123912515', '"{u\'label\': u\'label\'}"'),
(u'input-1510215273074', '"{u\'label\': u\'Preferred Assignment Area\'}"'),
(u'input-1510215283971', '"{u\'label\': u\'Expected Salary\'}"'),
(u'input-1510215288135', '"{u\'label\': u\'Last Drawn Salary\'}"'),
])
从上面,我想获得标签的内容。
这就是我目前在模板中浏览dict的方式:
{% for form in document.forms.all %}
{% for k,v in form.hdict.items %}
{% if 'header' not in k %}
{"key": {{k}}, "label": "{{v.label}}"},
{% endif %}
{% endfor %}
{% endfor %}
我能够成功获取密钥,但不能获取值部分(标签)。
我希望你能帮助我,因为我对django很新。感谢
答案 0 :(得分:0)
v.label
是一个字符串。将"{{v.label}}"
更改为{{v.label}}
答案 1 :(得分:0)
您应该将该逻辑保留在模板之外,并在视图中或源自它们的表单中反序列化这些值字符串:
# forms.py
import json
class WhateverForm(forms.Form) # form class of document.forms
# ...
def clean_dict(self)
return {k: json.loads(v).get('label') for k, v in self.hdict.items() if 'header' not in k}
# template
{% for form in document.forms.all %}
{% for k, v in form.clean_dict.items %}
{"key": {{ k }}, "label": "{{ v }}"},
{% endfor %}
{% endfor %}