【问题标题】:Django create session which does not destroy after logoutDjango创建注销后不会破坏的会话
【发布时间】:2019-05-17 11:43:13
【问题描述】:

在我的 django 项目中,我想要一个仅在特定时间后销毁的会话,为此我设置了过期时间,但会话在注销后也会销毁。

基本上我想要一个不受任何登录/注销活动影响的会话。

我搜索了它,但没有找到任何解决方案,请帮助我。

【问题讨论】:

    标签: django python-3.x django-sessions


    【解决方案1】:

    试试这个:

    Views.py

    from django.contrib.auth import logout
    
    def logoutUser(request):
        logout(request)
        messages.success(request,"Successfully logged out")
        return redirect("login")
    

    【讨论】:

      【解决方案2】:

      好吧,当您调用 logout 时,它是 flushes 会话。如果要保留该数据,则需要定义自己的注销功能。你可以这样尝试:

      from django.contrib.auth import logout
      
      def logout(request):
          your_data = request.session.get('your_key', None)
          current_expiry = request.session.get('_session_expiry')
          logout(request)
          if your_data:
              request.session['your_key'] = your_data
              if current_expiry:
                 request.session['_session_expiry'] = current_expiry
      

      仅供参考这是未经测试的代码。此外,如果您不使用会话存储注销后应该持续的数据,也许会更好。您可以为此使用 redis 或任何临时存储。

      【讨论】:

      • 感谢您的回答,如何在不使用默认 django 缓存的情况下使用 redis?
      • 好吧,你不需要将它定义为默认的 django 缓存。你可以查看这个包:pypi.org/project/redis。希望对您有所帮助。
      猜你喜欢
      • 2013-02-12
      • 2018-07-31
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      • 2012-11-25
      • 2012-07-30
      • 1970-01-01
      相关资源
      最近更新 更多