<p>基本上,你做错了。你知道吗</p>
<p>首先,你需要检查表格是否有效。用户可以输入任何废话,但你不想让他们这样做:</p>
<pre><code>if request.method == "POST":
form = MyForm(request.POST)
if form.is_valid():
# Now you can access the fields:
name = form.cleaned_data['name']
</code></pre>
<p>如果表单无效,只需将其传递回<code>render()</code>,它就会显示错误。你知道吗</p>
<p>另外,不要这样做:</p>
<pre><code>return render(request, 'CreatePersonEmail.html', locals())`
</code></pre>
<p>正确地建立你的上下文字典,不要使用<code>locals()</code>,它是黑客和你污染你的上下文。你知道吗</p>
<p>因此,完整视图可能如下所示(摘自django docs,稍作改动:</p>
<pre><code>def get_name(request):
# if this is a POST request we need to process the form data
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = NameForm(request.POST)
# check whether it's valid:
if form.is_valid():
name = form.cleaned_data['name']
return render(request, 'some_page.html', {'name': name})
# if a GET (or any other method) we'll create a blank form
else:
form = NameForm()
return render(request, 'name.html', {'form': form})
</code></pre>