Enumerating Through Lists in a Django Template
Dec 18, 2023
Environment
python 3.9.5
django4 4.2.8
I recently started learning django for my new project, through a awesome youtube video by free code camp on django which convers the basic to advance topics on django and it's template engine. while going through I had problem where I had to enumerate a list passed from the view to the template. You can use these methods below.
# view.py
def product_list_all(request):
queryset = [
{title: "Product 1"},
{title: "Product 1"},
{title: "Product 1"}
]
context = {
"products": queryset
}
return render(request, "product_list.html",context)
these function handles the request on the products/all
for GET request handled by url.py in the root project. Your's url.py file should look something to this, at lease it would have the the route as same as list_all_products_in_db
# urls.py
from django.contrib import admin;
from django.urls import path;
urlpatterns = [
path('admin/', admin.site.urls),
path("products/list/", product_list_all, name="list_all_products_in_db")
]
to enumerate through a list passed from the view to the template. You can use these methods below
variable | defination |
---|---|
forloop.counter |
enumerating index starting from 1 |
forloop.counter0 |
enumerating index starting from 0 |
forloop.revcounter |
enumerating index starting from the tail |
forloop.revcounter0 |
enumerating index starting from 0 |
forloop.first |
true when index is at 0 |
forloop.last |
true when index is at tail |
forloop.parentloop |
enumerates through the parent loop |
An example of the forloop.counter
will be:
{% for product in products %}
{{ forloop.counter }} : {{ product.title }}
{% endfor %}
Output:
1: Product 1
2: Product 2
3: Product 3
For forloop.counter0
it will be:
{% for product in products %}
{{ forloop.counter0 }} : {{ product.title }}
{% endfor %}
0: Product 1
1: Product 2
2: Product 3
As for the length of a list, products|length
can be used.
{{ products | length }}
3