對於調查問卷,我想向用戶呈現一系列表單。我想保持通用視圖,以便它可以在序列中呈現任何表單實例。如何按順序呈現一系列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