会话在 django Restviews 中不起作用

问题描述 投票:0回答:3

嗨,我正在尝试在会话中设置一个值,但没有获取该值,我不知道我做错了什么。

设定值

class ClView(GenericAPIView):

    def get(self, request, *args, **kwargs):
        # Get Method Code
    def post(self, request, *args, **kwargs):
        cid = request.data['id'] 
        self.request.session['myid'] = cid
        request.session.modified = True
        return Response(status=status.HTTP_202_ACCEPTED)

获取价值

class MainView(APIView):
    def get(self, request, *args, **kwargs):
        cid = self.request.session.get('myid')
        return Response({"id":cid})
中间件中的

'django.contrib.sessions.middleware.SessionMiddleware',
并且已经尝试过没有
'self'

python django django-sessions
3个回答
0
投票

据我所知,您正在使用正确的语法获取和设置请求会话。

例如

request.session.get('KEY') # for get
request.session['KEY'] = 1 # for set

这是另一篇关于在缓存中获取/设置项目的相关文章。

根据给定的信息很难说出你的失败是什么。

我对您的设置有几个问题,可能有助于澄清其他人以帮助回答您的问题。

  • 您使用的是数据库支持的会话吗?如果是这样,您确定要运行 migrate 吗?
  • 您是否正在使用缓存支持的会话运行缓存?
  • 您是否将
    SESSION_COOKIE_AGE
    设置为非常低的值?

0
投票

你的问题解决了吗? 我也有同样的问题,不知道怎么解决。


-1
投票

您正在设置

self.request.session
,而您需要设置
request.session

class ClView(GenericAPIView):

    def get(self, request, *args, **kwargs):
        # Get Method Code
    def post(self, request, *args, **kwargs):
        cid = request.data['id'] 
        request.session['myid'] = cid
        request.session.modified = True
        return Response(status=status.HTTP_202_ACCEPTED)
class MainView(APIView):
    def get(self, request, *args, **kwargs):
        cid = request.session.get('myid')
        return Response({"id":cid})
© www.soinside.com 2019 - 2024. All rights reserved.