无法解析django模板中的orderddict

时间:2017-11-24 05:31:55

标签: python django

我在尝试解析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很新。感谢

2 个答案:

答案 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 %}