2012-04-27 8 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およびPOS: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の結果で何もしません。あなたもそこからそれを返す必要があります。

他の2点:print Pos:Bには決して到達しません。もっと真剣に、は、Djangoにリクエストごとの状態を格納するためにグローバル変数を使用する必要があります。プロセスは多くの要求に耐えることができるため、単一の要求内の情報に関連する変数だけを保持することは危険です。

+0

ありがとう、私は間違いを犯しました、Pos:Bは印刷しませんでした。 login_checkの前に 'return'を追加すると、リダイレクトされます。 – leemzoon

関連する問題