在模板中执行{% 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'。
有谁知道为什么?
答案 0 :(得分:7)
您应该在每个模板中放置{% load ... %}
,以便使用自定义标记或过滤器。
在您的情况下,调用过滤器cut
也不是一个好主意,因为此过滤器already exists(它用于从字符串中剪切一个点)。