2012-04-27 6 views
0

원본 코드는 다음과 같습니다.메서드에서 HttpResponseRedirect가 적용되지 않습니다.

def my_index(request): 
    global account 
    if request.session.get('account',False): 
     account=request.session['account'] 
    else: 
     return HttpResponseRedirect("http://login.passport.com/"); 
    print "login check pass" 
    ... 

내가 검사 선을 메서드에 넣으려고하면 잘못됩니다.

단자를 인쇄 순위 : A와 포스 : B,하지만 페이지가 내가 해봤 그것은 "로그인 체크 패스를"인쇄 계속

을 login.passport.com하는

리디렉션 did't pdb.set_trace(), 그것을 통해 HttpResponseRedirect,하지만 난 여전히 잘못 찾을 수 없습니다.

누군가 나에게 단서를 줘?

def login_check(request): 
    global account 
    if request.session.get('account',False): 
     account=request.session['account'] 
    else: 
     print "Pos:A" 
     return HttpResponseRedirect("http://login.passport.com/"); 
     print "Pos:B" 

def my_index(request): 
    global account 
    login_check(request) 
    print "login check pass" 
    ... 

답변

1

당신은 my_indexlogin_check의 결과로 아무것도하지 않습니다. 거기에서 다시 돌려 줄 필요가 있습니다.

두 개의 다른 점 : print Pos:B에 결코 도달하지 않습니다. 더 심각하게, 결코은 장고에 요청 당 상태를 저장하기 위해 전역 변수를 사용해야합니다. 프로세스는 많은 요청에 대해 지속될 수 있으므로 단일 요청의 정보와 관련된 변수 만 유지하는 것은 위험합니다.

+0

감사합니다. 실수를했습니다. Pos : B가 인쇄되지 않았습니다. login_check 전에 'return'을 추가하면 리디렉션됩니다. – leemzoon

관련 문제