使用Django的内置yesno过滤器,我需要插入其中一个值:
owner_name
以下是我在模板中尝试使用的代码:
"Look what {{ is_owner|yesno:"I,{{ owner_name }}" }} created!"
使用上面的代码会导致以下错误:
无法解析余数:':“我,{{owner_name'来自 'is_owner | yesno:“我,{{owner_name'
那么如何在过滤器的参数中转义变量呢?
答案 0 :(得分:5)
您可以做的另一件事是使用with
模板标记和add
过滤器连接参数:
{% with yesno_args="I,"|add:owner_name %}
"Look what {{ is_owner|yesno:yesno_args }} created!"
{% endwith %}
我认为这比必须添加自定义过滤器更简单。
答案 1 :(得分:1)
您可以创建custom filter来执行您想要的操作。
看起来像{{ is_owner|my_yesno:owner_name }}
使用自定义过滤器
from django.template.defaultfilters import yesno
def my_yesno(value, arg):
yes_no_list = ['I', arg]
return yesno(value, yes_no_list)
这将允许您在包装器my_yesno
中创建列表时重用yesno。如果你想要做一些不同的事情,你也可以编写自己的逻辑。请务必{% load %}
自定义过滤器。