Python 将字典传递给Django表单
我正在尝试将Python字典列表传递到POST上的表单,但不确定如何执行。我正在组装一个字典,然后将它添加到主字典中,并将它们传递到表单以供显示 非常简单的示例: 视图.pyPython 将字典传递给Django表单,python,django,Python,Django,我正在尝试将Python字典列表传递到POST上的表单,但不确定如何执行。我正在组装一个字典,然后将它添加到主字典中,并将它们传递到表单以供显示 非常简单的示例: 视图.py vehicles = { 'vehicle1': {'car': 'pontiac', 'engine': '400', 'model': 'GTO'}, 'vehicle2': {'car': 'chevrolet', 'engine': '396', 'model': 'Chevelle'},
vehicles = {
'vehicle1': {'car': 'pontiac', 'engine': '400', 'model': 'GTO'},
'vehicle2': {'car': 'chevrolet', 'engine': '396', 'model': 'Chevelle'},
'vehicle3': {'car': 'ford', 'engine': '289', 'model': 'Mustang'}
}
return render(request, "vehicle_detail.html", {'vehicles': vehicles})
HTML
<p>
{% for vehicle in vehicles %}
<b>{{ vehicle.car }}</b>
<b>{{ vehicle.engine }}</b>
<b>{{ vehicle.model }}</b>
{% endfor %}
</p>
{车辆中车辆的百分比%}
{{vehicle.car}
{{vehicle.engine}
{{vehicle.model}
{%endfor%}
我尝试了几种不同的方法来实现这一点,但都没有成功。处理此问题的正确方法是什么?迭代字典的.values()
您希望迭代字典的值,以便可以编写:
<p>
{% for vehicle in vehicles.values %}
<b>{{ vehicle.car }}</b>
<b>{{ vehicle.engine }}</b>
<b>{{ vehicle.model }}</b>
{% endfor %}
</p>
在这种情况下,它只是:
<p>
{% for vehicle in vehicles %}
<b>{{ vehicle.car }}</b>
<b>{{ vehicle.engine }}</b>
<b>{{ vehicle.model }}</b>
{% endfor %}
</p>
{车辆中车辆的百分比%}
{{vehicle.car}
{{vehicle.engine}
{{vehicle.model}
{%endfor%}
您引用词典的方式是正确的,但是您没有在Views.py中正确引用词典
这将是正确的方法:
return render(request, "vehicle_detail.html", {'vehicles': vehicles.items()})
这应该是可行的,您也可以在HTML中这样做,如下所示:
{% for vehicle in vehicles.items() %}
这应该行得通。作为调试的第一步,您可以在视图中记录vehicles
的内容,然后再将其传递到render()
调用中。基本上不会引发错误,但UI中也不会显示任何内容。当我在render()
之前看到它时,它看起来是这样的:{'vehicle1':{'car':'pontiac','engine':'400','model':'GTO','vehicle2':{'car':'chevrolet','engine':'396','model':'Chevelle','vehicle3':{'car:'ford','engine':'289','model':'Mustang'}
查看HTML,标记hanks下不存在任何内容!这让我更接近了。它适用于您的第一个示例,但在我尝试您的元组/列表示例时没有显示任何内容,这意味着它没有出错,但HTML中没有显示任何内容。我想让它工作起来,你认为HTML逻辑实际上有错误吗?@SteveV:aargh,在这种情况下,没有.values()
,而只是在列表/元组上迭代。
{% for vehicle in vehicles.items() %}