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

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

{{ obj.loan_amount }} - {{ obj.service_charge }}

【问题讨论】:

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

标签: python django django-templates


【解决方案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”扩展名。
猜你喜欢
  • 2013-04-22
  • 2017-09-03
  • 2013-04-20
  • 2012-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
相关资源
最近更新 更多