对于调查问卷,我想向用户呈现一系列表单。我想保持通用视图,以便它可以在序列中呈现任何表单实例。如何按顺序呈现一系列Django表单?
目前,我存储了表单对象(不是实例)的列表,并且我需要展示每个表单的实例。 (例如formobject = formslist[3]; form = formobject();
)。
有没有更pythonic这样做?我已经考虑在每个表单的定义中使用getnext
函数,但我仍然需要一个地方列出我想要生成的表单序列。
下一步将介绍一些跳过逻辑,所以硬连线表单序列并不理想。
也许这会有所帮助。这是我在我看来,使用getnext
函数。它从第一种形式的作品到第二,但当时并没有服务于第三种形式:
def showform(request):
if 'formobj' not in locals():
formobj = StartForm
if request.method == 'POST': # If the form has been submitted...
form = formobj(request.POST)
if form.is_valid():
try:
form.save()
except:
pass
cd = form.cleaned_data
formobj = form.get_next()
form = formobj()
if formobj == 'done':
render_to_response('doneform.html', context_instance=RequestContext(request))
else:
form = formobj()
else:
form = formobj()
return render_to_response('template.html', {'form': form, 'requestpath': request.get_full_path()}, context_instance=RequestContext(request))
你是否看了[窗体向导]可能会有所帮助(https://docs.djangoproject.com/en/dev/ref/的contrib/formtools /形式的向导/)? – jterrace 2012-03-08 20:06:10
是的。我发现表单向导有限;它没有(据我所知)保存来自服务器上每一步的输入数据。如果用户想要停止填写表单并稍后再回来,则这是长表单的风险。 – Ari 2012-03-08 20:30:28
@Ari:你用过django-merlin吗?你有一些工作代码可以分享吗? – 2014-05-22 05:41:25