Login

Template range filter

Author:
zalun
Posted:
March 9, 2009
Language:
HTML/template
Version:
Not specified
Score:
6 (after 7 ratings)

Easy to use range filter. Just in case you have to use a "clean" for loop in the template.

Inspired by Template range tag

Copy the file to your templatetags and load them.

Django doc | Custom template tags and filters

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from django.template import Library

register = Library()

@register.filter
def get_range( value ):
  """
    Filter - returns a list containing range made from given value
    Usage (in template):

    <ul>{% for i in 3|get_range %}
      <li>{{ i }}. Do something</li>
    {% endfor %}</ul>

    Results with the HTML:
    <ul>
      <li>0. Do something</li>
      <li>1. Do something</li>
      <li>2. Do something</li>
    </ul>

    Instead of 3 one may use the variable set in the views
  """
  return range( value )

More like this

  1. Bootstrap Accordian by Netplay4 7 years, 9 months ago
  2. Bootstrap theme for django-endless-pagination? by se210 10 years, 9 months ago
  3. Bootstrap theme for django-endless-pagination? by se210 10 years, 9 months ago
  4. Reusable form template with generic view by roldandvg 10 years, 10 months ago
  5. Pagination Django with Boostrap by guilegarcia 10 years, 11 months ago

Comments

pro547 (on May 2, 2009):

This should be a default filter

#

marcalj (on July 28, 2009):

@pro547 I second that!

Thanks for the snippet! :)

#

jerry2801 (on October 20, 2009):

simple and great!

#

rizumu (on October 19, 2010):

for one based, you can add 1 via a list comprehension

return [v + 1 for v in range(value)]

#

alanhussey (on January 9, 2013):

Would it make more sense to call this as_range instead of get_range?

#

ara (on February 1, 2014):

This doesnt work tho:

                {% for x in 3|get_range %}
                    <tr>
                        <td></td>
                        <td></td>
                        <td></td>
                    </tr>
                {% endfor %}

But this works fine:

                {% for x in 3|get_range %}
                    <tr>
                        <td{{ x }}></td>
                        <td></td>
                        <td></td>
                    </tr>
                {% endfor %}

#

Please login first before commenting.