2012-04-27 89 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

它接着打印「登錄檢查通」

我試着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_index的的login_check結果做任何事情。你也需要從那裏返回它。

其他兩點:print Pos:B永遠不會到達;更嚴重的是,你應該從不使用全局變量在Django中存儲每個請求的狀態。一個進程可能會持續很多請求,所以在單個請求中保留僅與信息相關的變量是很危險的。

+0

謝謝,我犯了一個錯誤,Pos:B沒有打印。當我在login_check之前添加'return'時,它會重定向。 – leemzoon 2012-04-27 15:11:19