我想最小化模板中的代码,因为我想显示的项目很多。要输出的变量是相同的,并且im使用相同的模板。详细信息如下
我尝试了for或statement,但是我得到的错误是'for'语句应使用格式'for x in y':用于(shoe_list或cup_list)中的项目
这是原始代码
{% extends 'base_generic.html' %}
{% load static %}
{% block content %}
<body>
<h1 class="titleheadline"> List of items</h1>
{% if shoe_list %}
{% for item in shoe_list %}
<td>{{req.colour}}</td>
<td>{{req.size}}</td>
<td>{{req.price}}</td>
{% endfor %}
{% elif cup_list %}
{% for item in cup_list %}
<td>{{req.colour}}</td>
<td>{{req.size}}</td>
<td>{{req.price}}</td>
{% endfor %}
{% else %}
<p>There are none in stock.</p>
{% endif %}
</body>
{% endblock %}
以下是我所做的不起作用的更改
{% extends 'base_generic.html' %}
{% load static %}
{% block content %}
<body>
<h1 class="titleheadline"> List of items</h1>
{% if shoe_list or cup_list %}
{% for item in (shoe_list or cup_list) %}
<td>{{req.colour}}</td>
<td>{{req.size}}</td>
<td>{{req.price}}</td>
{% endfor %}
{% else %}
<p>There are none in stock.</p>
{% endif %}
</body>
{% endblock %}
我希望减少代码以提供与原始代码相同的结果。
答案 0 :(得分:1)
一种方法是在服务器端组合这些列表,然后遍历包含模板中所有内容的单个列表。
例如:
观看次数
# If shoe_list and cup_list are querysets
from itertools import chain
combined_list = list(chain(shoe_list, cup_list))
模板
{% for item in combined_list %}
<td>{{item.colour}}</td>
<td>{{item.size}}</td>
<td>{{item.price}}</td>
{% else %}
There are none in stock.
{% endfor %}