django切片数字在模板中

时间:2012-01-11 23:28:09

标签: django django-templates django-template-filters

有没有办法在django模板中获取给定数字的多个数字?

例如:

{{ some_num|get_digit:2 }} 

会给你第二个最右边的数字。对于1224531,它将是3

有没有办法获得最后3位数或前5位数?像python的切片一样?

类似的东西:

{{ some_num|get_digits:2,5}}

4 个答案:

答案 0 :(得分:21)

有一个“切片”模板标签

https://docs.djangoproject.com/en/dev/ref/templates/builtins/#slice

它使用与Python列表切片相同的语法。

示例:

{{ some_list|slice:":2" }}
在python中

这相当于:

some_list[:2]

BTW你的第二个例子是"2:5"而不是"2,5"

NB。 Python切片适用于任何“序列”。字符串和列表是序列。数字不是!

答案 1 :(得分:2)

{{1234567|make_list|slice:'2:5'|join:''}}

斯特凡诺的回答是正确的。您需要一个预处理步骤将您的号码转换为一个列表,以及一个后处理步骤,将该列表合并回字符串。

答案 2 :(得分:1)

在切片之前将数字转换为字符串的任何额外过滤器都可以使用。我使用了这些变体:

{{ some_num|slugify|slice:"2:5" }}

{{ some_num|stringformat:"d"|slice:"5:10" }}

答案 3 :(得分:0)

您只需要编写如下代码即可进行切片:- {{valueformoney|slice:"0:4"}}

{% for cloth in valueformoney|slice:"0:4" %}
    <div class="product h-100  w-100 border rounded ">
        <div class="img__container">
            <img src="{{cloth.cloth_image.url}}" alt="" />
        </div>
        <div class="product__bottom">
            <div class="price">
                <span class="text-danger"> <del>{% min_price cloth as result %} {{ result|rupee}}</del></span>&nbsp;
                <span>{% discount_price cloth as result %}{{result|rupee}}</span>
                <span class="float-right badge p-3 badge-info">Save {{cloth.cloth_discount}}% </span>
            </div>
            <h3 class="p-4">{{cloth.cloth_name}}</h3>
            <div class="button">
                <a href="/product_detail/{{cloth.cloth_slug}}" class="btn-block">See More</a>
            </div>
        </div>
    </div>
{% endfor %}