2010-11-30 8 views
0

등록 절차가 몇 단계로 나뉘어 있습니다. 현재 페이지가 세션에 저장됩니다. 하지만 제 기능은 이상하게 작동합니다. step1을 새로 고치면 세션의 변수가 2으로 변경되고 대신 step2이로드됩니다. 이 단계에서 사용자가 이미 생성되었는지 확인하고 step을 1로 줄이고 step이 렌더링되기를 바라는보기로 리디렉션합니다. 하지만 그 대신 내가이상한 리디렉션 및 세션 동작

def my_rte_landing(request): 
    step = request.session.get("step", request.REQUEST.get("step", 1)) 
    logging.debug("my_rte_landing top step: %s" % step) 

    if request.method == "POST": 
     (... next steps ...) 
    else: 
     if step == 1: 
      logging.debug("step 1") 
      html = render_step1(request) 
      request.session["step"] = 2  

      return render_to_response('socialauth/login_page.html',{'html': html,}, context_instance=RequestContext(request))    
     else: 
      logging.debug("step 2") 
      logging.debug("step2, step: %s" % request.session.get('step')) 
      new_user = True 
      new_user_id = request_user_uid(request, request.user.id)  
      html = render_step2(request) 
      request.session["step"] = 3 

      return render_to_response('socialauth/login_page.html', 
            {'html': html}, context_instance=RequestContext(request)) 

받고 있어요 것은 여기에 사용자의 존재를 확인 내 기능입니다 : (I 로깅하지, 처음 페이지를 방문하고있어

def request_user_uid(request, user_id): 
    if request.session['step'] == 2: 
     logging.debug("1 here") 
     id = get_user_id(user_id) 
     if id: 
      logging.debug("2. here") 
      return id 

     request.session['step'] = 1 
     logging.debug("3. here") 
     logging.debug("step: %s" % request.session.get('step')) 
    return HttpResponseRedirect(reverse('my_rte_landing')) 

을 그리고 내 디버그는 다음과 같습니다, 새로 고침 나는 ..

2010-11-30 17:11:21,434 DEBUG my_rte - nie zalogowany 
2010-11-30 17:11:23,245 DEBUG my_rte_landing top step: 1 
2010-11-30 17:11:23,246 DEBUG step 1 
(first refresh) 
2010-11-30 17:11:34,626 DEBUG my_rte_landing top step: 2 
2010-11-30 17:11:34,626 DEBUG step 2 
2010-11-30 17:11:34,626 DEBUG step2, step: 2 
2010-11-30 17:11:34,626 DEBUG 1 here 
2010-11-30 17:11:34,628 DEBUG 3. here 
2010-11-30 17:11:34,628 DEBUG step: 1 
(second refresh) 
2010-11-30 17:11:59,523 DEBUG my_rte_landing top step: 3 
2010-11-30 17:11:59,523 DEBUG step 2 
2010-11-30 17:11:59,524 DEBUG step2, step: 3 
+0

URL을 게시 할 수 있습니까? – Seitaridis

답변

0

당신은 단계를 재설정) 2 단계는, 새로 고침, 여전히 2 단계를 볼 수 있습니다

 new_user_id = request_user_uid(request, request.user.id) 
     # request.session["step"] is currently set to 1 ... however the 
     # following lines undo that... 
     html = render_step2(request) 
     request.session["step"] = 3 

그래서 당신은 당신이 반환 값 혼합

0

... 당신이 바로 그 다음 일은 백 (3)로 설정됩니다) (request_user_uid 단계 == 1을 설정하는 반면 :

def request_user_uid(request, user_id): 
    if request.session['step'] == 2: 
     logging.debug("1 here") 
     id = get_user_id(user_id) 
     if id: 
      logging.debug("2. here") 
      return id #### !!!! returning some value 

     request.session['step'] = 1 
     logging.debug("3. here") 
     logging.debug("step: %s" % request.session.get('step')) 
    return HttpResponseRedirect(reverse('my_rte_landing')) #### !!!! HttpResponseRedirect 

및 기능 사용을 : new_user_id = request_user_uid(request, request.user.id) # contains HttpResponseRedirect instance 의도적입니까?

+0

내 말은, 당신은'new_user_id'에 단지'HttpResponseRedirect' 인스턴스 만 리디렉션하지 않습니다. – user461342