Flask app.after_request()使用户保持在同一页面上

时间:2016-07-27 15:19:05

标签: python flask

我有以下代码:

@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修饰函数需要参数才能运行。

1 个答案:

答案 0 :(得分:2)

假设您的代码实际上是这样的:

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

如果用户未登录,您只会返回响应。删除else并始终返回响应,无论您是否执行其他操作。

if 'usercode' in session:
    ...

return response