[英]Python 3 / Django 2, Passing a dictionary value to form field before saving
[英]Passing a Dictionary to Django Form
我试图将一个Python字典列表传递给POST上的表单,但不知道该怎么做。 我正在组装一本字典,然后将其添加到主字典中,并将它们传递给FORM进行显示。
很简单的例子:
Views.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>
我尝试了几种不同的方法,但没有工作。 处理这个问题的正确方法是什么?
dict
ionary的.values()
你想迭代字典的值 ,所以你可以写:
<p>
{% for vehicle in vehicles.values %}
<b>{{ vehicle.car }}</b>
<b>{{ vehicle.engine }}</b>
<b>{{ vehicle.model }}</b>
{% endfor %}
</p>
但请注意,Python中的字典是无序的,因此呈现元素的顺序可以交换(例如,一次庞蒂亚克将在福特之前呈现,有时则相反。您无法在模板中解决此问题,从那时起,订单已经丢失。
tuple
, list
,... 但是,您可以使用保留订单的列表,元组或其他数据结构,例如:
vehicles = [
{'car': 'pontiac', 'engine': '400', 'model': 'GTO'},
{'car': 'chevrolet', 'engine': '396', 'model': 'Chevelle'},
{'car': 'ford', 'engine': '289', 'model': 'Mustang'}
]
return render(request, "vehicle_detail.html", {'vehicles': vehicles})
在这种情况下,它只是:
<p>
{% for vehicle in vehicles %}
<b>{{ vehicle.car }}</b>
<b>{{ vehicle.engine }}</b>
<b>{{ vehicle.model }}</b>
{% endfor %}
</p>
您引用字典的方式是正确的,但是您没有正确引用Views.py中的字典
这将是正确的方法:
return render(request, "vehicle_detail.html", {'vehicles': vehicles.items()})
这应该工作,您也可以在您的HTML中执行此操作,如下所示:
{% for vehicle in vehicles.items() %}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.