how to run this code in django template

PythonDjangoTemplates

Python Problem Overview


this is my code :

{% for i,j in enumerate(a) %}
	{{i}} ,{{j}}
{% endfor%}

but , it show a error , i think it cant run the enumerate method ,

so how to run the enumerate in django template ,

thanks

Python Solutions


Solution 1 - Python

The template subsystem has some special constructs built into the for/endfor block that allows you to access the current index of the loop without having to call enumerate.

{% for j in a %}
    {{ forloop.counter0 }}, {{ j }}
{% endfor %}

While this snippet solves your immediate problem, if you're expecting to have access to Python builtins and other Python constructs inside your Django templates, you may be misunderstanding the sandbox that it provides/enforces.

Solution 2 - Python

you can use {{ forloop.counter }} or {{ forloop.counter0 }} for the same effect, the latter is 0-indexed, thus more like enumerate.

Solution 3 - Python

{% for item in a %}
    {{ forloop.counter }}, {{ item }}
{% endfor %}

Link related

Solution 4 - Python

Django template makes up the presentation layer and are not meant for logic. From the docs
>If you have a background in programming, or if you’re used to languages which mix programming code directly into HTML, you’ll want to bear in mind that the Django template system is not simply Python embedded into HTML. This is by design: the template system is meant to express presentation, not program logic.

Now to get the same functionality in Django, you will have to complete your logic in the views.

views.py

def my_view(request, ...):
    ....
    enumerated_a = enumerate(a);
    ....
    return render_to_response('my_template.html', {'enumerated_a ': enumerated_a }..)

Now enumerate function returns an enumerate object which is iterable.
my_template.html

{% for index, item in enumerated_a %}
    {{ index }},{{ item }}
{% endfor %}

Although I think you can probably change it to an enumerated list and use it like that as well.

Solution 5 - Python

If however you need to use a function within a template, i suggest you create a filter or a tag instead. For reference, check out http://docs.djangoproject.com/en/1.2/howto/custom-template-tags/

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionzjm1126View Question on Stackoverflow
Solution 1 - PythonJoe HollowayView Answer on Stackoverflow
Solution 2 - PythonUku LoskitView Answer on Stackoverflow
Solution 3 - PythonrazpeitiaView Answer on Stackoverflow
Solution 4 - PythonvabhdmanView Answer on Stackoverflow
Solution 5 - PythongladysbixlyView Answer on Stackoverflow