我一直在尝试使用cookie会话来保存用户的数据,我已经在我以前的应用程序中成功地使用了会话,但这一次它无法正常工作
我知道为了得到会话密钥的值,必须修改或保存会话。
我以前做的是做一个mixin,并在视图上调用它,我需要会话键,这里的情况是获取会话键,并将该值保存在示例字段中,但会话键为None,或者如果我将代码更改为我在底部编写的代码,则每次请求都会创建一个新的会话键
下面是我在以前的应用程序中使用的mixin,它工作得很好
class SessionMixin:
def get_session(self,request,*args,**kwargs):
session = self.request.session
if not session.get('has_session'):
session["has_session"] = True
return self.__class__.get(self,request,*args,**kwargs)
class MyView(SessionMixin,generic.View):
def get(self,request,*args,**kwargs):
super().get_session(self,request,*args,**kwargs)
print(self.request.session.session_key,"Gives me none")
# rest of the code goes here
字符串
我的会话cookie设置
SESSION_COOKIE_AGE = 604800
SESSION_ENGINE = "django.contrib.sessions.backends.signed_cookies"
型
这是我也尝试过的,但它只是在每个请求上创建一个会话密钥。
class SessionMixin:
def get(self,request,*args,**kwargs):
session = self.request.session
if not session.session_key:
session.save()
型
2条答案
按热度按时间vfh0ocws1#
中的
get
方法没有调用get_session(...)
方法。另外,您可以像这样执行:字符串
我使用的是
create()
方法,而不是save()
。因为它旨在创建新的会话。更多信息可以在文档中找到。uwopmtnx2#
我在我的一个应用程序中遇到了和你一样的问题。我用这段代码解决了这个问题。你将不再有session_key None。
字符串