Я полагаю, что если вы можете, то вы должны структурировать свои данные по-другому; в противном случае должно быть много if / else. Это должно быть сделано по вашему мнению.
Может быть такая структура, где все похожие элементы сгруппированы в список:
data = {
'user': user.username,
'punti_capitano': {'nome': team.capitano.display_name, 'lista_punti': point_cap_list},
'punti_rider_list': [
{'id': 2, 'nome': team.rider_2.display_name, 'lista_punti': point_rider2_list},
{'id': 3, 'nome': team.rider_3.display_name, 'lista_punti': point_rider3_list},
{'id': 4, 'nome': team.rider_4.display_name, 'lista_punti': point_rider4_list},
{'id': 5, 'nome': team.rider_5.display_name, 'lista_punti': point_rider5_list},
{'id': 6, 'nome': team.rider_6.display_name, 'lista_punti': point_rider6_list},
{'id': 7, 'nome': team.rider_7.display_name, 'lista_punti': point_rider7_list},
{'id': 8, 'nome': team.rider_8.display_name, 'lista_punti': point_rider8_list},
{'id': 9, 'nome': team.rider_9.display_name, 'lista_punti': point_rider9_list},
],
}
Затем в шаблоне вы можете использовать что-то вроде этого для отображения общих элементов:
<table>
<tr>
<td>
Capitano: {{ data.punti_capitano.nome }}
</td>
<td>
Totale: {{ data.punti_capitano.lista_punti.TOT }}
</td>
<td>
{% for k,v in data.punti_capitano.lista_punti.items %}
{% if k != 'TOT' %}
<p>{{ k }}: {{ v }}</p>
{% endif %}
{% endfor %}
</td>
</tr>
{% for rider in data.punti_rider_list %}
<tr>
<td>
rider_{{ rider.id }}: {{ rider.nome }}
</td>
<td>
Totale: {{ rider.lista_punti.TOT }}
</td>
<td>
{% for k,v in rider.lista_punti.items %}
{% if k != 'TOT' %}
<p>{{ k }}: {{ v }}</p>
{% endif %}
{% endfor %}
</td>
</tr>
{% endfor %}
</table>
Вам нужно будет отрегулировать его в соответствии с вашим конкретным случаем, но это должно дать вам общее направление.