我想知道我们是否可以将 django 过滤器用作变量,其中 python 方法格式化文本可以设置可以由模板呈现的过滤器值
过滤器通常的工作方式是这样的
{{ html_text | 安全 }} 或 {{ plain_text | 换行符 }}
我想在变量中设置过滤器“安全”/“换行符”的值并像这样呈现
{{ 文字 | 过滤变量}}
网上查了下,没搞明白,求帮助。
我想知道我们是否可以将 django 过滤器用作变量,其中 python 方法格式化文本可以设置可以由模板呈现的过滤器值
过滤器通常的工作方式是这样的
{{ html_text | 安全 }} 或 {{ plain_text | 换行符 }}
我想在变量中设置过滤器“安全”/“换行符”的值并像这样呈现
{{ 文字 | 过滤变量}}
网上查了下,没搞明白,求帮助。
你不能这样做,但你可以创建一个接受参数的自定义过滤器:
from django.template import defaultfilters
@register.filter
def apply_filter(value, filter):
if filter == 'safe':
return defaultfilters.safe(value)
if filter == 'linebreaks':
return defaultfilters.linebreaks(value)
else:
# You might want to raise an exception here, but for example purposes
# I'll just return the value unmodified
return value
然后,在您的模板中:
{{ text|apply_filter:filter_variable }}
如果您有几个过滤器,则此方法有效:
{% ifequal filter_variable 1 %}{{ text|safe }}{% endifequal %}
{% ifequal filter_variable 2 %}{{ text|linebreaks }}{% endifequal %}
{% ifequal filter_variable 3 %}{{ text|yourfilter }}{% endifequal %}
我赞同克里斯普拉特所说的,但我会这样做:
from django.template import defaultfilters
@register.filter
def apply_filter(value, filter):
return getattr(defaultfilters, filter)(value)
这样它适用于任何过滤器。