<p>这是django文档中关于<a href="https://docs.djangoproject.com/en/dev/ref/forms/api/#bound-and-unbound-forms" rel="noreferrer">bound and unbound forms</a>的关键部分。</p>
<blockquote>
<p>A Form instance is either <strong>bound</strong> to a set of data, or <strong>unbound</strong>: </p>
<ul>
<li>If it’s <strong>bound</strong> to a set of data, it’s capable of validating that data and rendering the form as HTML with the data displayed in the HTML. </li>
<li>If it’s <strong>unbound</strong>, it cannot do validation (because there’s no data to validate!), but it can still render the blank form as HTML.</li>
</ul>
</blockquote>
<p>您不能真正看到您给出的示例表单的区别,因为该表单在“绑定数据”样式中是有效的。让我们通过添加一个<code>age</code>字段来扩展表单,这样差异将更加明显。</p>
<pre><code>class MyForm(forms.Form):
name = forms.CharField()
age = forms.IntegerField()
</code></pre>
<h2>装订形式</h2>
<pre><code>my_form = MyForm({'name': request.user.first_name})
</code></pre>
<p>此表单无效,因为未指定<code>age</code>。在模板中呈现表单时,将看到<code>age</code>字段的验证错误。</p>
<h2>具有动态初始数据的未绑定窗体</h2>
<pre><code>my_form = MyForm(initial={'name':request.user.first_name})
</code></pre>
<p>此表单未绑定。不会触发验证,因此在呈现模板时不会显示任何错误。</p>