Python 在django,我可以使用';as';在类似这样的if标记中:{%if过度地\u-long.nested\u引用的\u-long.chain\u作为foo%}

Python 在django,我可以使用';as';在类似这样的if标记中:{%if过度地\u-long.nested\u引用的\u-long.chain\u作为foo%},python,django,if-statement,django-templates,Python,Django,If Statement,Django Templates,我正在从json向xml填充一个非常冗长的.chain.\u长的.nested.\u引用 有时,父级不存在,为了减少模板的填充,我想使用如下内容: {% if excessively_verbose.chain_of_long.nested_references as foo%} 我已经尝试了上面和下面的方法: {% if excessively_verbose.chain_of_long.nested_references with excessively_verbose.chain_of_

我正在从json向xml填充一个
非常冗长的.chain.\u长的.nested.\u引用

有时,父级不存在,为了减少模板的填充,我想使用如下内容:

{% if excessively_verbose.chain_of_long.nested_references as foo%}
我已经尝试了上面和下面的方法:

{% if excessively_verbose.chain_of_long.nested_references with excessively_verbose.chain_of_long.nested_references as foo%}
但是在is的末尾,
没有使用/as

这是否可能(最好不重新写入
{%if%}
标记)?它看起来简单、直接而且有用(至少对我来说)


我猜这是Django的等价物,它看起来不太有希望。听起来你想要的是更符合以下原则的东西:

{% with foo=excessively_verbose.chain_of_long.nested_references %}
    {% if foo %}
        {{ foo }} bar
    {% endif %}
{% endwith %}

是,但压缩到if标记中。我猜这是不可能的?我相当肯定,在Django模板语言中,甚至在Python本身中,都无法做到这一点。这个确切的场景实际上就是
with
标记背后的意图。从Django的文档中,
以更简单的名称缓存复杂变量。这在多次访问“昂贵”方法(例如,访问数据库的方法)时非常有用。
这很有意义。不过,与python的不同之处在于,您不需要额外的一行来关闭if标记,也不需要使用标记。