Django模板 - 将模板中变量的值传递给templatetags过滤器

un3*_*33k 1 tags django templates django-templates

name class一个id,一个first和一个last属性

在我的view.py中,我从数据库中获取一个名称对象并将其传递给index.html模板.

在我templagetags/my_tags.py,我有一个过滤器my_private_tag(value, arg),取值和arg.它将arg附加到值并返回结果.

def my_private_tag(value, arg):
  return value + ' ' + arg
Run Code Online (Sandbox Code Playgroud)

在我的index.html标记中,我需要执行以下操作.

{% if name %}

  # to display 
  # John says hello
  {{name.first | my_private_tag:"says hello"}

  # Johns student id = id_value
  {{name.first | my_private_tag:"????????"}

  # Johns student id = id_value, lastname = lastname_value
  {{name.first | my_private_tag:"????????"}

{% endif %}
Run Code Online (Sandbox Code Playgroud)

哪里:

id_value = name.id & lastname_value = name.last
Run Code Online (Sandbox Code Playgroud)

请填写???????? 如果你可以的话.

Nad*_*mli 8

而不是为此实现自己的过滤器.为什么不这样做:

{{name.first }} says hello
{{name.first }}'s student id = {{ name.id }}
Run Code Online (Sandbox Code Playgroud)

它更具可读性.这就是你应该如何使用模板.

如果你仍然想为此使用自定义过滤器,你可以传递这样的变量:

{{name.first|my_private_tag:name.id}}
Run Code Online (Sandbox Code Playgroud)