3

{% 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]

当我将它加载到“结束模板”中时,行为符合预期。如果time = 19:30:12.123456然后{{ time|cut:'.' }}返回19:30:12. 当我在base.html返回值中加载它时19:30:12123456,与输入相同,但没有“截止点”。

有谁知道为什么?

4

1 回答 1

9

您应该{% load ... %}在每个模板中放置您想要使用自定义标签或过滤器的位置。

在您的情况下,调用 filter 也不是一个好主意cut,因为该过滤器已经存在(并且它用于从您的字符串中剪切一个点)。

于 2012-05-03T07:57:28.807 回答