我有时会看到@stringfilter
带有@ register. filter。
所以,我用@stringfilter
创建了test
过滤器,如下所示:
# "templatetags/custom_tags.py"
from django.template import Library
from django.template.defaultfilters import stringfilter
register = Library()
@register.filter(name="test")
@stringfilter # Here
def test_filter(num1, num2):
return
但是,它接受int
类型值而没有错误,如下所示:
# "templates/index.html"
{% load custom_tags %}
{{ 3|test:7 }} # Here
我认为@stringfilter
只接受str
类型的值,而其他类型的值会出错。
Django中的@stringfilter
是什么?
1条答案
按热度按时间2izufjch1#
@stringfilter可以将第一个参数(parameter)转换为
str
类型。下面是关于
@stringfilter
的文章:如果您正在编写一个只需要字符串作为第一个参数的模板过滤器,则应该使用装饰器stringfilter。这将在传递给函数之前将对象转换为它的字符串值
例如,将第一个参数
3
和第二个参数7
传递给test
过滤器,如下所示:然后,只有第一个参数
num1
是str
类型,如下所示:请注意,如果
@stringfilter
和@register.filter的顺序相反,则第一个参数不会转换为str
类型,如下所示:此外,您可以将
@stringfilter
与@register.simple_tag、@register.tag或@register.inclusion_tag一起使用,如下所示。* 如果@stringfilter
和@register.simple_tag
、@register.tag
或@register.inclusion_tag
的顺序相反,则第1个参数不转换为str
类型: