Python Django模板内置过滤器:在参数中使用变量值

Python Django模板内置过滤器:在参数中使用变量值,python,django,django-templates,Python,Django,Django Templates,使用Django的内置过滤器,我需要插入以下值之一: “我”这个词 变量的值owner\u name 以下是我尝试在模板中使用的代码: "Look what {{ is_owner|yesno:"I,{{ owner_name }}" }} created!" 使用上述代码会导致以下错误: 无法分析其余部分:':“我,{{owner\u name'来自 '是所有者|是否:'我{{所有者|姓名' 那么如何在过滤器的参数中转义变量呢?您可以创建一个函数来执行您想要的操作 它看起来像{{is_own

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

  • “我”这个词
  • 变量的值
    owner\u name
  • 以下是我尝试在模板中使用的代码:

    "Look what {{ is_owner|yesno:"I,{{ owner_name }}" }} created!"
    
    使用上述代码会导致以下错误:

    无法分析其余部分:':“我,{{owner\u name'来自 '是所有者|是否:'我{{所有者|姓名'

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

    您可以创建一个函数来执行您想要的操作

    它看起来像
    {{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)
    

    这将允许您在包装器中创建列表时重用yesno
    my_yesno
    。如果您想做一些不同的事情,也可以编写自己的逻辑。请确保
    {%load%}
    您的自定义筛选器。

    您可以做的另一件事是使用
    模板标记和
    添加
    筛选器连接参数:

    {% with yesno_args="I,"|add:owner_name %}
    "Look what {{ is_owner|yesno:yesno_args }} created!"
    {% endwith %}
    
    我认为这比添加自定义过滤器更简单