Python 将字典传递给Django表单

Python 将字典传递给Django表单,python,django,Python,Django,我正在尝试将Python字典列表传递到POST上的表单,但不确定如何执行。我正在组装一个字典,然后将它添加到主字典中,并将它们传递到表单以供显示 非常简单的示例: 视图.py vehicles = { 'vehicle1': {'car': 'pontiac', 'engine': '400', 'model': 'GTO'}, 'vehicle2': {'car': 'chevrolet', 'engine': '396', 'model': 'Chevelle'},

我正在尝试将Python字典列表传递到POST上的表单,但不确定如何执行。我正在组装一个字典,然后将它添加到主字典中,并将它们传递到表单以供显示

非常简单的示例:

视图.py

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() %}