使用 Django 的内置yesno过滤器,我需要插入以下值之一:
- “我”字
- 变量的值
owner_name
这是我尝试在模板中使用的代码:
"Look what {{ is_owner|yesno:"I,{{ owner_name }}" }} created!"
使用上面的代码会导致以下错误:
无法解析剩余部分:':"I,{{ owner_name' from 'is_owner|yesno:"I,{{ owner_name'
那么如何在过滤器的参数中转义变量呢?
使用 Django 的内置yesno过滤器,我需要插入以下值之一:
owner_name
这是我尝试在模板中使用的代码:
"Look what {{ is_owner|yesno:"I,{{ owner_name }}" }} created!"
使用上面的代码会导致以下错误:
无法解析剩余部分:':"I,{{ owner_name' from 'is_owner|yesno:"I,{{ owner_name'
那么如何在过滤器的参数中转义变量呢?
您可以做的另一件事是使用with
模板标签和add
过滤器连接参数:
{% with yesno_args="I,"|add:owner_name %}
"Look what {{ is_owner|yesno:yesno_args }} created!"
{% endwith %}
我认为这比添加自定义过滤器要简单。
您可以创建自定义过滤器来执行您想要的操作。
它看起来像{{ 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)
这将让您在 wrapper 中创建列表时重用 yesno my_yesno
。如果您也想做一些不同的事情,您也可以编写自己的逻辑。请务必使用{% load %}
您的自定义过滤器。