在django模板中减去两个变量[重复]

Posted

技术标签:

【中文标题】在django模板中减去两个变量[重复]【英文标题】:Subtracting two variables in django template [duplicate] 【发布时间】:2015-05-03 23:05:27 【问题描述】:

我必须在 django 模板中减去两个值。我该怎么做?

 obj.loan_amount  -  obj.service_charge 

【问题讨论】:

它包括像 myval|add:"-5" 这样的减法。但在这里我打算进行变量减法。 在我上面的链接中,您可以创建自己的过滤器...但为什么不在视图中这样做呢? 【参考方案1】:

有两种方法可以做到这一点。

1) 更优选的方式(基于业务逻辑和模板逻辑的分离),是在views.py 中计算您尝试执行的操作,然后通过上下文传递值。例如:

class FooView(View):
    def get(self, request, *args, **kwargs):
        obj = Foo.objects.get(pk=1)
        obj_difference = obj.loan_amount - obj.service_charge
        return render(request, 'index.html', 'obj': obj,
                                              'obj_difference': obj_difference)

这将允许您在模板中直接使用 obj_difference

2) 第二种不太理想的方法是使用模板标签。

@register.simple_tag(takes_context=True)
def subtractify(context, obj):
    newval = obj.loan_amount - obj.service_charge
    return newval

这将允许您在模板中使用% subtractify obj %

注意:如果您使用方法 #2,请不要忘记在 HTML 文件的顶部使用 % load [tagname] %

【讨论】:

很好的答案,除了你不会在加载标签中使用“py”扩展名。

以上是关于在django模板中减去两个变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章