Dar*_*ech 10 django django-admin django-views
我有一个Django应用程序,它记录用户对两个经过身份验证的用户的产品选择.我的意图是使用request.session.session_key变量将匿名数据与用户相关联,如果他们决定稍后注册,这篇文章:
但是,当用户登录/注册时,会话密钥似乎会发生变化,因此会话密钥不再与用户关联.这是Django会话框架的正确行为吗?有没有可靠的方法来实现我正在寻找的功能?
任何帮助非常感谢.
小智 10
在settings.py中
SESSION_ENGINE ='youapp.session_backend'
在目录youapp文件session_backend.py中
from django.contrib.sessions.backends.db import SessionStore as DbSessionStore
class SessionStore(DbSessionStore):
def cycle_key(self):
pass
Run Code Online (Sandbox Code Playgroud)
登录后会话未更改
尽管nnmware建议的方法可能适用于此特定情况,但还有一种更好的方法。
cycle_key我们不应该在内部执行任何操作,而应该调用super方法,然后保存会话。
因为如果您查看原始cycle_key函数内部,将会看到旧会话中的数据已复制到新会话中,但实际上并未保存。
在settings.py中
SESSION_ENGINE = 'yourapp.session_backend'
Run Code Online (Sandbox Code Playgroud)
检查SESSION_ENGINE是否指向模块(.py文件),而不指向后端类!
现在,在您的“ yourapp / session_backend.py”中执行以下操作:
from django.contrib.sessions.backends.db import SessionStore as DbSessionStore
class SessionStore(DbSessionStore):
def cycle_key(self):
super(SessionStore, self).cycle_key()
self.save()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1792 次 |
| 最近记录: |