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