擅长:python、mysql、java
<p>对<a href="https://stackoverflow.com/a/59663775/5246906">dirkgroten's one</a>的补充答复</p>
<p>我已经完全讨厌基于Django函数的视图的传统结构。可以通过反转有效性测试并添加一行来重新计算它们,以便只存在表单的一个实例化。结果更易于阅读,并且对于显示两个或多个表单的视图更容易概括</p>
<pre><code>def raise_funds_medical_3(request):
args = [request.POST, request.FILES or None] if request.method == "POST" else []
form = RaiseFundsFrom3(*args)
if request.method != "POST" or not form.is_valid():
# unbound form or form not valid
return render(request,'funds/raise_funds_medical_3.html',{'form':form})
# form is valid so do the processing and redirect
check = form.save(commit=False)
check.user = request.user
check.save()
return redirect(<url_pattern>)
</code></pre>
<p>如果要处理>;1表格,则测试变为</p>
<pre><code> if request.method != "POST" or any(
[ not form.is_valid(), not form2.is_valid(), ...]):
</code></pre>
<p>这将强制对所有表单进行<code>.is_valid()</code>评估,即使第一个表单无效,因此<em>all</em>错误消息将显示给用户</p>
<p>在一个复杂的业务应用程序中,处理一个成功的表单提交可能需要比这个简单示例多出几行代码。将它放在末尾,而不是缩进,与所有样板文件(除了<code>return redirect(...)</code>)隔离,使事情变得更容易</p>