无法分析模板中Django If/else语句中的剩余部分

无法分析模板中Django If/else语句中的剩余部分,django,python-3.6,django-3.2,Django,Python 3.6,Django 3.2,我有几个if/else语句,不管页面上存在什么页面或其他内容,它们似乎都返回相同的解析错误 不管出于什么目的,我都把它弄得哑口无言。我的实际逻辑是有道理的,不用担心,我只想知道是什么语法导致了这个问题: <div> {% if True and 10 - 1 > 5 %} <p>1</p> {% else %} <p>2</p> {% endif %} </div>

我有几个if/else语句,不管页面上存在什么页面或其他内容,它们似乎都返回相同的解析错误

不管出于什么目的,我都把它弄得哑口无言。我的实际逻辑是有道理的,不用担心,我只想知道是什么语法导致了这个问题:

<div>
    {% if True and 10 - 1 > 5 %}
        <p>1</p>
    {% else %}
        <p>2</p>
    {% endif %}
</div>

{如果为真且10-1>5%}
一,

{%else%} 二,

{%endif%}

当我执行上述操作时,我希望它显示
1

标记,但返回一个“TemplateSyntaxError at”URL,无法解析余数:“-”from“-”。

默认情况下,django templates不允许进行数学运算,例如
加法
减法
,等等

我建议在视图函数中进行数学运算,并将其呈现给模板,然后直接使用它 例如:

然后在模板中,您可以执行以下操作

{% if True and my_result > 5 %}

{如果为真,则为%10 |加上:'-1'>5%}
一,

{%else%} 二,

{%endif%}

代码
10添加:'-1'
表示10+(-1)

so,这基本上是因为你不能像普通的python if块那样使用模板if块。而且因为你在它里面执行一些数学运算..它不能解析
-
减号,不管是html还是什么..所以要做这些加法和减法..djnago有模板标签…你可能应该使用thoseI我明白这是什么被认为是最佳实践,是“正确”的答案。谢谢你的背景资料。我的用例,虽然没有添加到上面,但在我的控制器中通过我无权访问的数据进行迭代,为所述数据的每次检查注入一个true或false。事实上,下面的内容对我帮助更大,但考虑到我提出的问题,我承认这是首选。如果可以,我会投票,但声誉不够。这是我发现的最有帮助的方法,也是我最终如何解决问题的方法,但我承认这是最令人讨厌的方法。无论如何,我想谢谢你。
{% if True and my_result > 5 %}
<div>
    {% if True and 10|add:'-1' > 5 %}
        <p>1</p>
    {% else %}
        <p>2</p>
    {% endif %}
</div>