2012-09-17 63 views
0

我使用Django的FormWizard作爲多步驟表單並作爲最後一步(保存數據後)我想顯示先前輸入的表單數據的摘要。Django FormWizard - 完成時顯示摘要

我可以通過重寫進行()方法是這樣實現的:

def done(self, form_list, **kwargs): 
    info = self.save_info(form_list[0]) 
    extra = self.save_extra(info, form_list[1]) 
    # how to provide context for redirect? 
    # return redirect('confirmation.html') 
    # this works, but uses POST 
    return render_to_response(
     'confirmation.html', 
     {'form_list': [form.cleaned_data for form in form_list]}, 
     context_instance=RequestContext(self.request) 
    ) 

呼籲通過POST的確認而不是我想使用重定向(瀏覽器後退按鈕)。但我不知道如何將form_list傳遞給視圖/模板,因爲重定向不需要上下文。任何想法,如果有一個乾淨的標準方式做到這一點?

注意:數據由匿名用戶輸入。所以保存的數據和用戶沒有關聯。

回答

1

您還可以將表單數據保存在會話中,並在調用confirmation.html視圖時檢索該信息。

如果你使用這個,我會建議設置SESSION_EXPIRE_AT_BROWSER_CLOSE = True或會話過期時間。

+0

嘿,是的。我確實使用了會話,但僅僅添加一個查找鍵就足夠了。謝謝,我會記住會議的到期時間。 – mzu

0

我認爲你可以這樣做。

def done(self, form_list, **kwargs): 
    info = self.save_info(form_list[0]) 
    extra = self.save_extra(info, form_list[1]) 
    # how to provide context for redirect? 
    # return redirect('confirmation.html') 
    # this works, but uses POST 
    form_list=[form.cleaned_data for form in form_list] 

    return HttpResponseRedirect("/url/"+form_list) 
+0

感謝您的回答。我最後只是在會話中添加一個密鑰,然後重定向(confirmation_view)。在confirmation_view中,我可以通過會話密鑰查找所需的數據。 – mzu