问题终于解决了。谢谢楼上。
我是直接到Django中的HttpResponse中调试出来的。它执行到了HttpResponse。
修改代码:
class SessionExpiredMiddleware(object):
def process_request(self,request):
if 'last_activity' in request.session:
last_activity = request.session['last_activity']
now = datetime.datetime.now()
if not request.is_ajax():
# don't set this for ajax requests or else your
# expired session checks will keep the session from
# expiring :)
# 系统时间AJAX显示不加入考虑
if (last_activity + datetime.timedelta(minutes=30)) < now:
if 'user_name' in request.session:
del request.session['user_name']
if 'last_activity' in request.session:
del request.session['last_activity']
error_info = u'登录超时,请重新登录!'
logging.info('Login session expired!')
return render_to_response("framework/out_frame.html",{'error_info':error_info})
else:
request.session['last_activity'] = now
return None
原因是:在页面上我用AJAX做了个显示服务器时间的功能,所以它每秒都会request一次。
超时时,它已经response("framework/out_frame.html“)了。所以后面我再手动执行request,就没啥反应了。现在代码改为上面的,可以达到我的要求了。
只是那个显示时间的AJAX明明response了,还是没显示out_frame.html可能是我其它程序有问题。
谢谢!