Django 创建注销后不会销毁的会话

Django create session which does not destroy after logout

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

基本上我想要的会话 不受任何 login/logout activity 影响。

我搜索了一下,没有找到任何解决方案,任何人都可以帮助我。

好吧,当您调用 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 或任何临时存储。

试试这个:

Views.py

from django.contrib.auth import logout

def logoutUser(request):
    logout(request)
    messages.success(request,"Successfully logged out")
    return redirect("login")