2016-07-27 5 views
-1

私は、次のコードを持っている:私は、ユーザーが「アクティブ」であるか否かを決定するために使用しようとしてること...フラスコapp.after_request()は、同じページ上でユーザーを保持します

@app.after_request 
def sense_inactive(response): 
    if session.has_key('usercode'): ## if user has logged in 
    usercode = session['usercode'] 
    inactive_rmt = info.find_one({'usercode': usercode})['inactive'] 

    curr_time = time.time() 
    last_req = session['req_time'] 
    ## time_difference = datetime.combine(date.today(), curr_time) - datetime.combine(date.today(), last_req) 
    time_difference = curr_time - last_req 
    if time_difference > 60: 
     usercode = session['usercode'] 
     insert = {'inactive': True} 
     info.update_one({'usercode': usercode}, {'$set': insert}) 
     print 'user is inactive' 
    else: 
     usercode = session['usercode'] 
     insert = {'inactive': False} 
     info.update_one({'usercode': usercode}, {'$set': insert}) 


    else: ## if user hasn't logged in 

    return response 

を私のウェブアプリ。ただし、このコードを実行すると、すべてのリンクが同じページに戻ります。リンクをクリックすると、app.after_requestコードが実行されますが、ページは同じままです。

私の「返信応答」は問題を引き起こしていますか?私はapp.after_requestの装飾された関数が機能するためにはパラメータを必要とするという(多少秘密の)文書を読みました。あなたのコードを仮定

+2

インデントを修正してください。 – davidism

答えて

2

は実際に次のようになります。

if 'usercode' in session: 
    ... 
else: # if user hasn't logged in 
    return response 

ユーザーがログインしていない場合にのみ応答を返すしているelseを削除し、常にあなたが何かを行うか否かの応答を返します。

if 'usercode' in session: 
    ... 

return response 
関連する問題