如果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>

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

我建议您完全放弃使用,而是使用全名引用文档。

此外,感觉其他地方可能有逻辑错误,或者至少有一些命名不正确的变量,因为您在页面中引用了product1,然后在下载中引用了product1。

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

试试这个:

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

相关内容

最新更新