2012-07-19 2 views
2

나는 두 가지보기/home과/가정/addItem를복귀 (재) 오류

이에 형성

/홈 집/addItem를 /에 데이터를 새로운 항목 및 POST를 작성을위한 양식이 포함 , 데이터의 유효성을 검사하는 경우 addItem은 사용자를/home으로 다시 리디렉션합니다. 데이터가 유효성을 검사하지 않으면 문제가 발생합니다.

사용자가/home에있는 양식으로 돌아가고 싶지만 양식에 입력 된 양식이 포함되기를 바랍니다. -data는 사용자에게 수정해야 할 것을 알리는 양식 오류와 함께 표시됩니다.

대부분의 장소, 내가 찾을 수 있었다 제안했다 : 잘 작동하지 않을 것이다,은/홈 컨텐츠를 표시하는 동안

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}) 

그러나,이 솔루션/홈/addItem를의 사용자를 떠나 내 케이스.

그래서 어떻게 형태의 콘텐츠 및 오류와 함께/가정 사용자를 보낼 수 있습니까? 양식 데이터가 큰없는 경우

답변

4

, 당신은 세션/쿠키에 제출 된 데이터를 저장하고 /home로 사용자를 리디렉션 할 수 있습니다. /home에 대한보기는 양식 데이터가 있는지 세션/쿠키를 확인하고 이전에 제출 한 데이터와 오류가있는 양식을 사용자에게 표시 할 수 있습니다.

샘플 코드 (쿠키를 삭제/오류를 저장하는 가장 좋은 방법을 확인) :

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