计算django模板的实例数

计算django模板的实例数,django,templates,Django,Templates,我已经阅读了所有其他的答案,有些说你可以,有些说你不能,所以我尝试了。我试图做的是迭代我的数组,如果对象的id匹配,则增加计数器,稍后再显示它。我把它设置成这样: {% with elect_count=1 %} {% for device in devices %} {% if device.ixDeviceType.ixDeviceClass_id == 3 %} {{ elect_count|add

我已经阅读了所有其他的答案,有些说你可以,有些说你不能,所以我尝试了。我试图做的是迭代我的数组,如果对象的id匹配,则增加计数器,稍后再显示它。我把它设置成这样:

 {% with elect_count=1 %}
        {% for device in devices %}

                {% if device.ixDeviceType.ixDeviceClass_id == 3 %}
                    {{ elect_count|add:1 }}//increment the counter
                {% endif %}

        {% endfor %}
        <li style="list-style: none;" class="padding5">
            <span class="glyphicon glyphicon-flash" style="color: yellow; font-size: larger;"></span>
            <span name="meter-count">{{ elect_count }}</span>//display total number of elect_count
            <ul id="meter-summary">
            </ul>
        </li>
    {% endwith %} 
{%选择计数=1%}
{设备%中设备的%s}
{%if device.ixDeviceType.ixDeviceClass_id==3%}
{{elect_count}add:1}//递增计数器
{%endif%}
{%endfor%}
  • {{elect\u count}}//显示elect\u count的总数
  • {%endwith%}
    但是当我运行它时,它显示
    1
    而不是递增这个elect\u count变量,当我执行
    {{elect\u count}}
    时,它是0


    您不能在模板中保存计数器,但可以在视图中保存,并在上下文中传递:

    views.py

    def view_function(request):
        elect_count = 0
        for device in devices:
            if device.ixDeviceType.ixDeviceClass_id == 3:
                elect_count += 1
        context['elect_count'] = elect_count
    

    无法在模板中保存计数器,但可以在视图中保存计数器,并在上下文中传递计数器:

    views.py

    def view_function(request):
        elect_count = 0
        for device in devices:
            if device.ixDeviceType.ixDeviceClass_id == 3:
                elect_count += 1
        context['elect_count'] = elect_count
    

    这是因为不是在模板中计数,而是在视图中计数,并在上下文中传递结果。你不应该把这样的逻辑放在模板中,模板只是为了显示。我知道,但我真的不想在我的请求上下文中传递50个变量,所以我想我可以这样做,因为jinja2允许这样做,但意识到django default不是jinja2,而是数据结构(如列表或字典)中的所有计数,然后循环数据结构以获得每个计数。啊,我明白你的意思了。谢谢,这是因为您不在模板中计数,而是在视图中计数,并在上下文中传递结果。你不应该把这样的逻辑放在模板中,模板只是为了显示。我知道,但我真的不想在我的请求上下文中传递50个变量,所以我想我可以这样做,因为jinja2允许这样做,但意识到django default不是jinja2,而是数据结构(如列表或字典)中的所有计数,然后循环数据结构以获得每个计数。啊,我明白你的意思了。谢谢