Django:在使用模板继承时在基本模板文件中加载自定义过滤器时出现问题

时间:2012-05-03 07:52:24

标签: django django-templates django-1.4 django-template-filters

在模板中执行{% load custom_filters %}时,在{% extends "base.html" %}之后一切正常,但当我将加载移动到base.html模板时,过滤器会产生奇怪的行为。这是我的custom_filters.py

from django import template
from django.template.defaultfilters import stringfilter

register = template.Library()

# To cut off strings at a specified character, at first occurance. Example:
#   time = 19:30:12.123456
#   {{ time|cut:'.' }}
#   returns: 19:30:12
@register.filter
@stringfilter
def cut(string, cutoff_point):
    return string.split(cutoff_point, 1)[0]

当我在'end-template'中加载它时,行为就像预期的那样。如果time = 19:30:12.123456{{ time|cut:'.' }}返回19:30:12。当我在base.html中加载时,返回的值为19:30:12123456,与输入相同但没有'cutoff-point'。

有谁知道为什么?

1 个答案:

答案 0 :(得分:7)

您应该在每个模板中放置{% load ... %},以便使用自定义标记或过滤器。

在您的情况下,调用过滤器cut也不是一个好主意,因为此过滤器already exists(它用于从字符串中剪切一个点)。