Django Template过滤器传递错误的数据

时间:2016-06-19 20:46:33

标签: django filter

我正在多个嵌套的dicts中收集数据并将它们传递给我的模板。我写了一个简单的过滤器,用键来获取dict中的数据:

@register.filter
def get_item(dictionary, key):
    return dictionary.get(key)

在我的模板中,我正在访问数据:

{% for location_type_id, location_type_name in location_types.items %}
    {% with disctrict=disctricts|get_item:location_type_id %}
        ...
    {% endwith %}
{% endfor %}

当我使用{{debug}}时,我看到:

{'districts': {5: {6: 'Friedrichshain'}, 7: {7: 'Kreuzberg', 8: 'Charlottenburg'}},
'location_types': {5: 'Bar', 7: '5'}}

但我收到错误:'str'对象没有属性'get'。当打印过滤器的参数时,我得到一个空字符串传递给filter而不是dict。

2 个答案:

答案 0 :(得分:1)

你有一个错字。变量名称为districts,但您在模板中使用disctricts

答案 1 :(得分:1)

模板中有拼写错误,可能会导致错误: {% with disctrict=disctricts|get_item:location_type_id %}应为{% with disctrict=districts|get_item:location_type_id %}