如何在django模板中调用带参数的变量函数?
我想在Django模板中实现类似的功能如何在django模板中调用带参数的变量函数?,django,Django,我想在Django模板中实现类似的功能 {{ variable.function(parameter) }} 其中,variable是通过上下文传递给模板的变量,在本例中为模型实例。 我尝试过不同的方法,但似乎没有一种有效。没有办法做到这一点。 您可以创建另一个变量并将其传递给上下文,以便使用它。 比如: 在你看来。 在模板中: {{result}这在Django模板中是不可能的:为了防止模板设计者射中自己的脚,这些模板被故意损坏。理由是模板中的唯一逻辑应该是表示逻辑,所有业务逻辑都应该保留在
{{ variable.function(parameter) }}
其中,variable
是通过上下文传递给模板的变量,在本例中为模型实例。
我尝试过不同的方法,但似乎没有一种有效。没有办法做到这一点。 您可以创建另一个变量并将其传递给上下文,以便使用它。 比如: 在你看来。 在模板中:
{{result}这在Django模板中是不可能的:为了防止模板设计者射中自己的脚,这些模板被故意损坏。理由是模板中的唯一逻辑应该是表示逻辑,所有业务逻辑都应该保留在视图中。有些人认为这很公平,有些人认为这有点傲慢(那些愚蠢的模板设计者不够聪明,不能安全地使用函数和方法) 我可以想出三个选择:
{{ variable.function(parameter) }}
现在,模板过滤器解决方案:首先,您必须遵循一个。过滤器本身应该是这样的:
# at your_tag_library.py
@register.filter(name='call_with')
def apply_callable(callable, arg):
return callable(arg)
然后在模板中,您可以执行以下操作:
{% load your_tag_library %}
{{ variable.function|call_with:parameter }}
当然,最后一个选项来自Daniel的答案-在视图中预计算值,并在模板中显示结果:
context['result'] = variable.function(parameter)
在模板中,您只需要{{result}}
context['result'] = variable.function(parameter)