django自定义模板过滤器

时间:2017-12-13 11:53:22

标签: python django django-templates

我正在尝试创建自定义模板过滤器,但收到Invalid filter错误。

TemplateSyntaxError at /attainment/reportcard/
Invalid filter: 'get_item'
Request Method: POST
Request URL:    http://127.0.0.1:8000/attainment/reportcard/
Django Version: 1.11.5
Exception Type: TemplateSyntaxError
Exception Value:    
Invalid filter: 'get_item'
Exception Location: /media/itsd/ITSD/ROFI/Projects/Rise/venv/lib/python3.5/site-packages/django/template/base.py in find_filter, line 606
Python Executable:  /media/itsd/ITSD/ROFI/Projects/Rise/venv/bin/python
Python Version: 3.5.2

我在template_filters.py创建了一个过滤器,并已注册。

template_filters.py

from django.template.defaulttags import register

# Custom template filter to get data from a dictionary using key in template

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

我在模板中使用过滤器如下。

<tbody>
    {% for subject in subjects %}
        <tr>
            <td>{{ subject|get_item:"subject" }}</td>
            <td>{{ subject|get_item:"efffort" }}</td>
            <td>{{ subject|get_item:"homework" }}</td>
            <td>{{ subject|get_item:"marks" }}</td>
            <td>{{ subject|get_item:"grade" }}</td>
        </tr>
    {% endfor %}
</tbody>

我错过了什么?

N.B:我已经跟着这个answer

1 个答案:

答案 0 :(得分:1)

在模板中使用之前,您必须加载标记库:

    let indexPath = tableView.indexPathForSelectedRow

或者您可以加载特定过滤器:

{% load template_filters %}

有关详细信息,请参阅custom template tags上的文档和{% load %}标记。