【发布时间】:2012-02-01 22:30:59
【问题描述】:
我知道可以在 Django 模板中创建模板过滤器,例如
{{ "abcdef"|makeUppercase }}
可以在 Django 中创建接受两个参数的模板过滤器吗?假设我想创建一个模板过滤器,它找到 n 的对数以 m 为底。我该怎么做?
谢谢。
【问题讨论】:
标签: django django-template-filters
我知道可以在 Django 模板中创建模板过滤器,例如
{{ "abcdef"|makeUppercase }}
可以在 Django 中创建接受两个参数的模板过滤器吗?假设我想创建一个模板过滤器,它找到 n 的对数以 m 为底。我该怎么做?
谢谢。
【问题讨论】:
标签: django django-template-filters
那不是模板标签,那是模板过滤器。是的,你可以接受一个额外的论点:
{{ foo|my_filter:"bar" }}
这个过滤器的参数是 foo 和 "bar" 的值。请注意,您只能发送两个参数:如果您需要更多参数,则必须在以逗号分隔的第二个参数中传递它们,并在模板中解析它们。
如果您只需要一个独立的模板标签,您可以使用@simpletag 装饰器来编写一个带有任意数量参数的装饰器。这些由普通的标签语法调用:
{% my_tag foo bar baz %}
【讨论】: