我有这个html代码,但我有20个产品,其中唯一更改的代码是image1
caption1
product1
等。
我是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变量将始终指向您的第一个产品。
我建议您完全删除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