我正在尝试使用 django (v 1.3) 模板呈现可变数量的字段名称/输入框。在我看来,我查找了一个表来获取列名,然后创建一个相同大小的 forms.CharFields() 列表,并将它们压缩在一起,如下所示:
ua_data = [forms.CharField(required=False) for i in range(len(ua_data_field_names))]
ua_fields = zip(ua_data_field_names, ua_data)
ua_field1 = forms.CharField(required=False) # temp field for testing
所以在它的最后,上下文包含这样的东西(只有一个字段):
>>> ua_fields
[(u'Test field', <django.forms.fields.CharField object at 0x108386b50>)]
在我的模板中,我正在运行以下循环:
{% for field in form.ua_fields %}
<tr>
<td>{{ field.0 }}</td>
<td>{{ field.1 }} {{ field.1.errors }}</td>
{#<td>{{ form.ua_field1 }} {{ form.ua_field1.errors }}</td>#}
</tr>
{% endfor %}
这会在呈现的 HTML 中喷出以下内容:
Test field <django.forms.fields.CharField object at 0x1081f1c50>
而如果我将<td>
上面的第二个与注释掉的行交换,我实际上会得到一个呈现的输入字段(ua_field1 是一个直接forms.CharField
对象)
是什么阻止了列表查找字段进行神奇的 HTML 渲染?