【问题标题】:django slice numbers in template模板中的 django 切片编号
【发布时间】:2012-02-08 08:04:24
【问题描述】:

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

例如:

{{ some_num|get_digit:2 }} 

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

有没有办法得到最后 3 位数字或前 5 位数字?喜欢python的切片?

类似:

{{ some_num|get_digits:2,5}}

【问题讨论】:

  • 搜索“django 模板标签切片”会让您找到答案!

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


【解决方案1】:

有一个“切片”模板标签

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

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

例子:

{{ some_list|slice:":2" }}

在python中这相当于:

some_list[:2]

顺便说一句,您的第二个示例将是 "2:5" 而不是 "2,5"

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

【讨论】:

  • 但这是否意味着我必须先将数字转换为列表?
  • @9-bits : slice 标签的工作方式类似于 python 的 slice:字符串是可迭代的,因此它可以完美地用于字符串。它不适用于数字 - 但同样,python 的切片也不适用于数字。
  • 不适用于动态值 - 即切片索引来自变量的位置。在 Jinja2 模板中,您只需执行 {{ some_list[:upper_index] }} 即可。
  • for 循环中的行为是什么?例如,从 |slice: 4 中的模型循环帖子?在这种情况下总是会显示第一个 id 吗?我正在处理一个问题,我需要循环四个项目并删除第一个 id 或 id=1 但它看到基于 id 循环被打乱了。那么,第一个 id 总是会被检索到的?
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      您只需要编写如下代码进行切片:- {{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 %}
      

      【讨论】:

        猜你喜欢
        • 2013-04-30
        • 2017-04-24
        • 2014-06-18
        • 2013-05-08
        • 2010-12-26
        • 2018-12-24
        • 2017-03-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多