【问题标题】:Session is not working in django restviews会话在 django restviews 中不起作用
【发布时间】:2021-05-19 23:40:51
【问题描述】:

您好,我正在尝试在会话中设置一个值,但没有得到该值,我不知道我做错了什么。

设定值

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


    【解决方案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})
    

    【讨论】:

      【解决方案2】:

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

      例如

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

      Here's another related post about getting/setting items in the cache.

      用给定的信息很难说你的失败是什么。

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

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

      【讨论】:

      • 对所有问题的回答都是否定的。除了使用会话之外还有其他方法吗
      • 我不确定你在这里问什么。您的原始帖子询问为什么您的会话无法从会话中获取/设置项目。
      • 关于所有问题的否定,您目前将SESSION_ENGINE 设置为什么?默认情况下,它设置为数据库。
      猜你喜欢
      • 1970-01-01
      • 2012-11-17
      • 2011-06-11
      • 2016-08-26
      • 2015-06-05
      • 2023-03-12
      • 2015-11-17
      • 1970-01-01
      相关资源
      最近更新 更多