2012-07-19 50 views
2

我有兩個觀點的/ home和/ home /的addItem回報(重定向),從而在錯誤

/home包含用於創建新項目,職位數據到/ home /的addItem一種形式,如果數據只會驗證addItem將用戶重定向到/ home,如果數據未驗證,則會出現問題:

我仍然希望用戶返回到/ home上的表單,但我希望表單包含輸入的表單 - 數據以及通知用戶需要修復的表單錯誤。

最多的地方,我已經能夠找到,建議:

def addItem(request): 
    form = NewItemForm(request.POST) 
    if(form.is_valid()): 
     #do stuff 
     return HttpResponseRedirect("/home") 
    return render_to_response("home-template.htm", {'form':form}) 

然而,這種解決方案將離開的/ home /的addItem用戶在顯示/家庭內容,這不會很好地工作我案件。

那麼如何將用戶發送到/ home以及表單內容和錯誤?

回答

4

如果您的表單數據不大,可以將您提交的數據存儲在session/cookie中,並將用戶重定向到/home/home的查看可以檢查會話/ cookie是否存在任何表單數據,並向用戶顯示包含以前提交的數據和任何錯誤的表單。

示例代碼(檢查錯誤,存儲的最佳方法/刪除cookies):

def addItem(request): 
    form = NewItemForm(request.POST) 
    if form.is_valid(): 
     #OK 
     return HttpResponseRedirect("/home") 
    else: 
     request.session['form_data'] = request.POST #this may not be exact way, please verify. 
     return HttpResponseRedirect("/home") 

def home(request): 
    form_data = request.session.get('form_data', None) 
    form = NewItemForm(initial=form_data) 
    form.is_valid() # to get errors in form 
    #render form using template. 
+0

謝謝,工程就像一個魅力:) – Born2Smile 2012-07-19 18:34:05