在Jinja2中执行算术运算

7

我想找出两个不同值之间的差异,但是我遇到了Jinja2错误。我不确定如何在此模板中找到差异。

我尝试使用-运算符,但这并没有起作用。因此,我使用sub来查找实际得分和预测得分之间的差异。

 {% for e in question.essays %}
    <div class="panel panel-default">
        <div class="panel-heading">
            <h3 class="panel-title">{{loop.index}}</h3>
        </div>
        <div class="panel-body">
            <div class="actual-score">Actual score: {% if e.actual_score %} {{e.actual_score|round(1)}}/5{% endif %}</div>
            <div class="predicted-score">Predicted score: {% if e.predicted_score %}{{e.predicted_score|round(1)}}/5{% endif %}</div>
            <p class="essay-text">Text: {{e.text}}</p>
        <div class="diff">Difference: {{ e.actual_score|sub(e.predicted_score)}} </div>

        </div>

我遇到了这个错误:
TemplateAssertionError: no filter named 'sub'

你的 sub 是指 <sub> 标签吗? - Amazing Things Around You
不,我用它来执行减法,但发现jinja没有默认的sub作为过滤器。那么我该如何找到差异呢? - Smriti Shrestha
1
尝试过简单地使用 {{ e.actual_score - (e.predicted_score)}} 吗? - Amazing Things Around You
1个回答

6
根据Jinja2文档,使用-应该能够正常工作。我这边也一切正常。请告知在使用该运算符时您遇到的错误信息。我在Jinja2文档中也找不到sub标签。因此,像Amazing Things Around You所说,我认为以下内容应该可以工作:
{{ e.actual_score - e.predicted_score }} 

顺便提一下,我发现唯一另一个可以执行类似算术运算的模板标签是Django的add标签,它也不支持减法。


1
类型错误:不支持的操作数类型“float”和“NoneType”在使用{{ e.actual_score - e.predicted_score }}时,我遇到了这个错误。 - Smriti Shrestha
1
看起来您正在尝试对一个数字和None执行减法操作。您需要有数值才能进行减法操作。 - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接