如何在视图中渲染django表单?

pri*_*stc 3 django django-forms

for field in FIELDS:
    row = []
    row.append("<tr>")
    row.append("<td>" + str(myform.fields.get(field)) + "</td>")
    row.append("</tr>")

    custom_fields.append("".join(row))
Run Code Online (Sandbox Code Playgroud)

当我将custom_fields变量提供给模板时,我得到的只是:

<tr><td><django.forms.widgets.CheckboxInput object at 0x1fa7d90></td></tr>
Run Code Online (Sandbox Code Playgroud)

如何才能正确呈现表单?


这就是我最终要做的事情:

form1 = CustomForm1()
form2 = CustomForm2()
form3 = CustomForm3()

for field in FIELDS:
    row = []
    row.append("<tr>")
    row.append("<td>" + str(form1.fields.get(field)) + "</td>")
    row.append("<td>" + str(form2.fields.get(field)) + "</td>")
    row.append("<td>" + str(form3.fields.get(field)) + "</td>")
    row.append("</tr>")

    custom_fields.append("".join(row))
Run Code Online (Sandbox Code Playgroud)

所以我可以在一个表中一起显示所有表单字段.

pri*_*stc 9

我刚想通了.这是form[field]不是form.fields[field]

>>> f = MyForm()
>>> f
<myform.forms.MyForm object at 0x1fa7810>

>>> f['myfield']
<django.forms.forms.BoundField object at 0x20c7e50>

>>> f.fields['myfield']
<django.forms.fields.BooleanField object at 0x1fa7850>
Run Code Online (Sandbox Code Playgroud)

form.fields所有未绑定字段的列表也是如此,并且form.__getitem__是一个返回绑定字段的可调用字段.