Django模板if语句中如何优先执行OR运算符?
Django模板条件判断优先级问题解决办法
Django模板的if标签语法不支持使用括号来改变逻辑运算的优先级,所以直接写(AAA or BBB) and CCC会触发解析错误。
要实现先执行OR再执行AND的逻辑,有两种可行方案:
方案一:嵌套if标签
通过两层if标签明确优先级,先判断AAA or BBB的结果,在该结果为真时再判断CCC:
{% if AAA or BBB %} {% if CCC %} do something {% endif %} {% endif %}
方案二:使用逻辑等价的无括号写法
利用逻辑运算的分配律,将(AAA or BBB) and CCC等价转换为(AAA and CCC) or (BBB and CCC)。由于Django模板中and的优先级高于or,直接去掉括号也能得到正确的运算顺序:
{% if AAA and CCC or BBB and CCC %} do something {% endif %}
内容的提问来源于stack exchange,提问作者MichaelS
相关产品推荐
相关产品推荐

