是否可以将2个上下文变量一起添加到在运行时计算的单个上下文变量中?
例如:如果我有{{contextA}}
(等于1)和{{contextB}}
(等于“建筑物”),并且我想将它们加在一起以获得上下文{{1building}}
,我该怎么做?
我尝试过:
{{contextA + contextB}}
{{{{contextA}} + {{contextB}}}}
{{contextA |add: contextB}}
{{contextA contextB}}
我想这是不可能的,这需要在视图中使用python来完成,但是如果我可以在模板中组合上下文变量,那将是理想的选择。
答案 0 :(得分:1)
U可以如下使用{% with
模板标记(此处为文档-> https://docs.djangoproject.com/en/3.0/ref/templates/builtins/#with)
{% with newvar=contextA|add:contextB %}
{{ newvar }}
{% endwith %}
newvar
将具有一个新值,如果进入forloop中,contextA或contextB会更改其值。
要显示名称等于newvar
值的上下文变量的值时,完成此操作的方法是创建一个custom template tag,如下所示:
@register.simple_tag(takes_context=True)
def dynvarvalue(context, dynvarname):
""" Returns the value of dynvarname into the context """
return context.get(dynvarname, None)
我做了一个小的概念证明:
{% with 1building='1 building value' contextA='1' contextB='building' %}
{% dynvarvalue contextA|add:contextB %}
{% endwith %}
哪个会产生以下输出,我想这就是您要的输出:
1 building value
希望这会有所帮助。
请注意:请注意,如果两个变量都可以转换为整数,则它们不会被串联,并且将按照文档所说的相加(https://docs.djangoproject.com/en/3.0/ref/templates/builtins/#add)
注2:我认为这样做有一些安全注意事项。