Iterate Numbers in Django Templates with For Loop

Django, a powerful Python web framework, offers a convenient way to iterate over range of numbers within a template using it”s built-in template tags and filters. Whether you need to generate a numbered list or perform other numerical operations within your templates, this blog post will walk you through the steps to effectively iterate over numbers in a Django template.

Using the range Filter

Django provides the range filter, which allows you to generate an sequence of numbers within a specified range. Heres how to use it:

{% for number in 5|range %}
    <p>Number {{ number }}</p>
{% endfor %}

In this example, we use the range filter to generate a sequence of numbers from 0 to 4 (5 – 1). The for loop iterates over this sequence, and you can access the current number using the number variable.

Custom Range: Generate Numbers within a Specific Range

You can specify a custom range by providing a starting and ending point as arguments to the range filter. For instance, to generate numbers from 1 to 10:

{% for number in 1|range:11 %}
    <p>Number {{ number }}</p>
{% endfor %}

This code generates numbers from 1 to 10.

Controlling the Step Value

You can also control step value between numbers. For example, to generate even numbers from 2 to 10, you can use a step of 2:

{% for number in 2|range:11:2 %}
    <p>Number {{ number }}</p>
{% endfor %}

This code generates even numbers from 2 to 10 with a step of 2.

Use Cases

Iterating over numbers in a Django template is valuable for various use cases, such as:

  1. Generating numbered lists.
  2. Creating pagination links or controls.
  3. Displaying data that requires numerical operations.
  4. Building custom calendars or timelines.


Django range filter empowers you to iterate over numbers within your templates making it easy to generate lists, control loops and perform numerical operations. By understanding how to use filter and customizing it according to your needs, you can enhance the functionality and user experience of your Django web app.