提问者:小点点

如果Django中的属性名中有数字,我可以使用for循环计数器吗?


我有这个html代码,但我有20个产品,其中唯一更改的代码是image1caption1product1等。

我是Django的新手,不知道这是否可以通过使用计数器的for循环来完成,或者是否可以通过{%include___with____%}来完成? 还是可以用Python代码来完成? 我对Python还比较陌生,不知道该怎么做。

我尝试了for循环计数器,但它说我无法执行{%image page.image{{forloop.counter}}fill.。。%},因为它需要在{{}}之前执行%}

 {# Product1 #}
        <div class="document product-card">
            <div class="w3-card-4 w3-margin w3-white" data-aos="fade-down">
                {% image page.image1 fill-150x150-c100 %}
                <div class="w3-container">

                </div>
                <hr>
                <p id="caption">{{ page.caption1 }}</p>
                {% for download in page.product1.all %}
                    {% with doc=download.product1 %}
                        <div class="download product-info">
                            <a href="{{ doc.url }}" class="smooth-over-button noDecoration">
                                <i class="fa fa-download"></i>
                                <p class="btn-txt">{{ doc.title }}</p>
                            </a>
                        </div>
                    {% endwith %}
                {% endfor %}
            </div>
        </div>

共2个答案

匿名用户

循环中的with语句正在执行缓存,因此您正在创建的doc变量将始终指向您的第一个产品。

我建议您完全删除with,而是使用全名引用文档。

另外,由于您引用的是page中的product1,然后是Download中的product1,因此感觉在其他地方可能存在逻辑错误,或者至少是一些命名不正确的变量。

如果您是python的新手,但有使用其他语言的经验,最好将for语句视为foreach,因为python没有传统的for逻辑。

匿名用户

请尝试以下操作:

page.image|add:forloop.counter
page.caption|add:forloop.counter
page.product|add:forloop.counter