我有这本字典
data={
'user': user.username,
'punti_capitano': {'nome_capitano':team.capitano.display_name,'lista_punti':point_cap_list},
'punti_rider2': {'nome_rider2':team.rider_2.display_name,'lista_punti':point_rider2_list},
'punti_rider3': {'nome_rider3':team.rider_3.display_name,'lista_punti':point_rider3_list},
'punti_rider4': {'nome_rider4':team.rider_4.display_name,'lista_punti':point_rider4_list},
'punti_rider5': {'nome_rider5':team.rider_5.display_name,'lista_punti':point_rider5_list},
'punti_rider6': {'nome_rider6':team.rider_6.display_name,'lista_punti':point_rider6_list},
'punti_rider7': {'nome_rider7':team.rider_7.display_name,'lista_punti':point_rider7_list},
'punti_rider8': {'nome_rider8':team.rider_8.display_name,'lista_punti':point_rider8_list},
'punti_rider9': {'nome_rider9':team.rider_9.display_name,'lista_punti':point_rider9_list},
}
现在,我想用所有这些元素创建一个HTML
表。我该怎么办?
我尝试过这种方式:
<h3>Capitano :{{data.punti_capitano.nome_capitano}} Totale:{{data.punti_capitano.lista_punti.TOT}}</h3>
{% for key,value in data.punti_capitano.lista_punti.items %}
{% if key != 'TOT' %}
{{key}} : {{value}}
{% endif %}
{%endfor%}
<h3>rider_2 :{{data.punti_rider2.nome_rider2}} Totale:{{data.punti_rider2.lista_punti.TOT}}</h3>
{% for key,value in data.punti_rider2.lista_punti.items %}
{% if key != 'TOT' %}
{{key}} : {{value}}
{% endif %}
{%endfor%}
<h3>rider_3 :{{data.punti_rider3.nome_rider3}} Totale:{{data.punti_rider3.lista_punti.TOT}}</h3>
{% for key,value in data.punti_rider3.lista_punti.items %}
{% if key != 'TOT' %}
{{key}} : {{value}}
{% endif %}
{%endfor%}
etc etc
但是我想要更自动的东西
答案 0 :(得分:0)
在模板中调用上下文字典后,您只需使用Django模板语言在该字典上循环即可。
例如:
<table>
{% for element in data %}
<tr>
<td>element.user</td>
</tr>
{% endfor %}
</table>
答案 1 :(得分:0)
我建议,如果可以的话,应该以其他方式构造数据;否则必须有很多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>
您需要根据具体情况进行调整,但这应该为您提供一个总体指导。