django模板中的变量减法

时间:2012-03-30 17:56:58

标签: django django-templates

可以写{{ myval.add:5 }}{{ myval|add:value }}甚至{{ myval|add:-5 }}

但是,我无法找到我应该输入的值来添加值* -1,如{{ myval|add:-value }}。遗憾的是,这不起作用。

6 个答案:

答案 0 :(得分:94)

您需要使用双引号:

{{ myval|add:"-5" }}

这会从myval中减去5个。

答案 1 :(得分:56)

内置的Django模板标签/过滤器并非包罗万象,但编写自己的自定义模板标签非常容易:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

您可以轻松制作自己的subtract模板代码:

@register.filter
def subtract(value, arg):
    return value - arg

答案 2 :(得分:12)

https://pypi.python.org/pypi/django-mathfilters

安装:$ pip install django-mathfilters 在模板中

{% load mathfilters %}

<ul>
    <li>8 + 3 = {{ 8|add:3 }}</li>

    <li>13 - 17 = {{ 13|sub:17 }}</li>

    {% with answer=42 %}
    <li>42 * 0.5 = {{ answer|mul:0.5 }}</li>
    {% endwith %}

    {% with numerator=12 denominator=3 %}
    <li>12 / 3 = {{ numerator|div:denominator }}</li>
    {% endwith %}

    <li>|-13| = {{ -13|abs }}</li>
</ul>

答案 3 :(得分:1)

我最近开始使用Django,并偶然发现了它:我需要一个非常简单的模板循环,该循环在n次后停止打印,并显示“更多”链接来切换其余项。

我非常感兴趣地阅读了人们的努力,他们试图理解为什么未将其添加到Django默认过滤器中(自2013年之前)。我不想创建自定义模板标签,并且找到了一种使用字符串和add结合withstringformat

减去2个变量的方法

假设我有一个项目列表,我想在其中打印前两个项目,然后隐藏其余项目,例如,显示其中有多少个隐藏项目。

John,Anna和其他5个人这样(给出7个项目的列表)

只要可见项目的数量在模板中被编码(例如2),就可以添加负数2 |add:"-2",但是我也希望可见项目的数量也是一个变量。上面建议的Math-filter库似乎不是最新的(我尚未在Django 2.x上进行过测试)。

技巧似乎是使用add帮助程序将整数作为字符串连接字符串“-”,因此在对{{1的任何连续调用中,都可以将其强制转换为负整数。 }}帮手。但是,如果该值不是字符串,则此方法不起作用,因此就是add帮助器的输入。

带有字符串值

模板stringformat(请注意,posts.html是如何作为字符串显式传递的-下面提供了替代方法)

visible

模板{% for post in posts %} <h4>{{ post.title }}</h4> ... {% include 'show_likes.html' with likes=post.likes visible="3" %} {% endfor %} (请注意show_likes.html使布尔运算符起作用)

add:0

带整数的替代

您可以使用{% with show=visible|default:"2" %} {% for like in likes %} {% if forloop.counter <= show|add:0 %} {% if not forloop.first %},{% endif %} {{ like.username }} {% endif %} {% endfor %} {% if likes|length > show|add:0 %} {% with rest="-"|add:show %} and {{ likes|length|add:rest }} more {% endwith %} {% endif %} like this {% endwith %}

在调用模板中将整数转换为字符串。

但是,如果要显示的可见项数是整数,则必须添加对stringformat:“ d”的调用,以将其转换为字符串

模板|stringformat:"d"

posts.html

模板{% for post in posts %} <h4>{{ post.title }}</h4> ... {% include 'show_likes.html' with likes=post.likes visible=3 %} {% endfor %}

show_likes.html

由于我是Django和Python的初学者,因此我敢肯定,这种方法远比实际创建自定义助手好得多!因此,我不建议任何人都应该使用此功能。这只是我尝试使用可用的模板帮助程序且没有任何自定义内容的解决方案。

希望这会有所帮助

答案 4 :(得分:0)

Loprimero es multiplicar por -1 para convertirlo en una valor negativo y guardarlo en una variable y后 a usar la suma

<块引用>

首先要乘以-1,变成负值 并将其保存在一个变量中,然后使用 add

{% widthratio val2 1 -1 as result %}
{{result|add:val1}}

答案 5 :(得分:0)

搜索后我发现我可以使用过滤器制作{% with var=value %}来进行算术运算“是否使用其他变量”
例如:我有 x = 5y = 3 并且需要将 y 的值添加到 x 值,我只需要这些步骤:< br/> 1- 创建变量 x :{% with x=5 %}
2- 创建变量 y :{% with y=3 %}
3- 在我的 HTML 标签中,<h1>,写下:<h1>{{ x|add:y }}</h1>
4- 用 : {% endwith %}
关闭 y 5- 用 : {% endwith %}
关闭 x 希望它对你有用,它对我有用。

{% with i=3 %}
    {% with x=1 %}
         <h1>{{i|add:x}}</h1> <!-- result is 4 -->
    {% endwith %}
{% endwith %}