繁体   English   中英

将字典传递给Django表单

[英]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中的字典是无序的,因此呈现元素的顺序可以交换(例如,一次庞蒂亚克将在福特之前呈现,有时则相反。您无法在模板中解决此问题,从那时起,订单已经丢失。

保证订单与tuplelist ,...

但是,您可以使用保留订单的列表,元组或其他数据结构,例如:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM