我正在尝试编写一个函数来获取所记录的人的username
,然后将de session_key
更改为新的。{/ p>
到目前为止我写的是:
def get_username(request):
try:
for coisa in request:
session_key = coisa # This seems to be wrong, but it works
session = Session.objects.get(session_key=session_key)
user_id = session.get_decoded().get('_auth_user_id')
user = User.objects.get(id=user_id) # Works very well until here, trust me
session.cycle_key() #this is where I'm getting the error
return HttpResponse(user.username)
except Exception, e:
print 'Erro: ' + str(e)
return HttpResponseServerError(str(e))
我传递的请求变量不是通常的django请求,它是由javascript脚本构建的请求,并且在其数据上只有session_key。
我得到的错误是:'Session' object has no attribute 'cycle_key'
我在这个函数上使用的session_key来自一个在页面加载时运行的函数,因此request
是来自django的“普通”请求变量:
session_key = request.session.session_key
答案 0 :(得分:0)
我不明白为什么你要做这一切。该用户已在request.user
,因此无需从会话中获取该内容,同样会话本身位于request.session
中 - 因此您只需request.session.cycle_key()
即可。{{1}}。
答案 1 :(得分:0)
cycle_key()属于sessions.backends.db.SessionStore(继承自SessionBase),以及您尝试使用的内容 这里是models.Session,这是一个会话模型。通常,request.session IIRC是SessionStore的一个实例。
所以你需要在这里创建一个新的SessionStore。它使用会话密钥初始化:
session = SessionStore(session_key)