Django模板错误:无法解析剩余部分

时间:2015-12-29 13:03:44

标签: python django django-templates jinja2

我正在尝试从Django(1.6.11)模板中的dict渲染值。 unit_list是单位(模型)的列表。 unit.unit_id是单位的主键。 tags_dict是标签的dict,其中unit_ids为键,标签为值。

{% for unit in unit_list %}
<tr>
    <td>{{ unit.unit_id }}</td>
    <td>{{ unit.version }}</td>
    <td>{{ unit.release_dt|date:'Y-m-d' }} {{ unit.release_dt|time:'H:i:s' }}</td>
    <td>{{ unit.update_dt|date:'Y-m-d' }} {{ unit.update_dt|time:'H:i:s' }}</td>
    <td>
        {{ tags_dict[unicode(unit)] }}
    </td>
    <td>{{ unit.last_modified|date:'Y-m-d' }} {{ unit.last_modified|time:'H:i:s' }}</td>
</tr>
{% endfor %}

但我收到了这个错误:

Could not parse the remainder: '(unicode(unit))' from 'tags_dict.get(unicode(unit))'

2 个答案:

答案 0 :(得分:1)

这是因为你不能把这样的函数调用放到Django模板中。看起来您应该在视图中执行此操作并将其作为变量传递给模板。您还可以在单​​元类上添加一个方法,如下所示:

def get_tags(self):
    tags_dict = {} # TODO: retrieve tags dict.
    return tags_dict[unicode(self)]

然后,您可以在模板中执行以下操作:{{ unit.get_tags }}

答案 1 :(得分:1)

只需删除这样的空格:

<td>{{unit.last_modified|date:'Y-m-d'}}{{unit.last_modified|time:'H:i:s'}}</td>