2012-10-01 63 views
1

我正在使用管理兩種形式的SessionWizardView。當我在最後一步重新加載頁面時,例如我回到了第一步,必須再次輸入所有字段。Django SessionWizardView跳轉到頁面重新加載後的第一步

這是預期的行爲?如果是這樣,是否有可能在我重新加載頁面之前回到步驟?當然,所有的領域都應該相應填寫。

class ManufacturingCalculatorWizard(SessionWizardView): 
    def get_template_names(self): 
    TEMPLATES = { 
     "blueprint": "manufacturing/forms/select_blueprint.haml", 
     "calculator": "manufacturing/forms/calculator.haml" 
    } 

    return [TEMPLATES[self.steps.current]] 

    def done(self, form_list, **kwargs): 
    form_data = [form.cleaned_data for form in form_list] 
    rcontext = RequestContext(self.request, { 'data' : calculate_manufacturing_job(form_data) }) 
    return render_to_response('manufacturing/forms/result.haml', rcontext) 
+0

當你重新加載時,你是否也發佈數據? – Rohan

+0

瀏覽器詢問我是否要重新發送表單。所以是的,這似乎是我再次發送發佈數據。 – Jens

+0

我在代碼中看不到那種行爲。您可能需要發佈嚮導視圖代碼,模板代碼。 – Rohan

回答

2

頁後done方法呈現的是不是嚮導的一部分,所以當你重新加載它,Django會嘗試重定向到第一頁作爲嚮導的新的會話。

如果您想要將最後一步添加爲預覽和確認頁面,您可以使用啞表單添加新步驟並使用該模板顯示適當的數據。要從以前的步驟中獲取數據,您可以使用get_context_data查看方法,使用以前表單的清理數據構建上下文。

+0

非常感謝! – Jens