6

使用 Django 的内置yesno过滤器,我需要插入以下值之一:

  1. “我”字
  2. 变量的值owner_name

这是我尝试在模板中使用的代码:

"Look what {{ is_owner|yesno:"I,{{ owner_name }}" }} created!"

使用上面的代码会导致以下错误:

无法解析剩余部分:':"I,{{ owner_name' from 'is_owner|yesno:"I,{{ owner_name'

那么如何在过滤器的参数中转义变量呢?

4

2 回答 2

9

您可以做的另一件事是使用with模板标签和add过滤器连接参数:

{% with yesno_args="I,"|add:owner_name %}
"Look what {{ is_owner|yesno:yesno_args }} created!"
{% endwith %}

我认为这比添加自定义过滤器要简单。

于 2014-01-22T18:36:39.457 回答
1

您可以创建自定义过滤器来执行您想要的操作。

它看起来像{{ 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 %}您的自定义过滤器。

于 2013-10-29T20:16:44.487 回答