2016-03-02 111 views
1

我已经通过pip安装django-redis-session并添加此设置到settings.py文件:使用Redis的工作来存储会话 - Django的

SESSION_ENGINE = 'redis_sessions.session' 

当我去到终端和类型:

$ redis-cli monitor 

我当我登录并注销时,可以看到有变化(使用python-social-auth)。

我的问题是:如何根据用户获取会话(来自redis)?

如果我打电话is_authenticated()用户函数它的工作原理,但我的DB(PostgreSQL)会话表有0行。

Fianlly,有没有办法手动编写会话密钥和数据?我需要使用基于redis中存储的两个字段的复杂PK会话。

+1

我不明白你的问题。为什么你会期望Posgres中的任何行?您已将会话后端专门设置为redis。 –

+0

@DanielRoseman是的,我不希望Postgres中的行我只是说会话已成功存储在redis中。 – Gocht

回答

1

您应该可以通过request.session获得当前会话。无论用户是否登录,这都应该起作用,无论用户是否登录。

有关更多信息,请参见using sessions in views上的文档。

+0

从'request.session'我可以访问用户,谢谢。 – Gocht

+0

如果您需要登录的用户,请使用'request.user' - 您不必通过会话。 – Alasdair

+0

再次感谢您,还有一个问题:您知道我该如何手动编写会话?我需要使用一个复杂的PK进行会话,我希望将其存储在redis中。 – Gocht