Python 如何在django中设置会话永不过期

Python 如何在django中设置会话永不过期,python,django,session,timeout,Python,Django,Session,Timeout,我正在使用Django Python。有没有办法设置会话永不过期 我不知道无限会话,但如果您使用会话中间件 使用大量的自动充电时间,它会工作 100年听起来还好吗 关于settings.py # time in minutes # 60min*24hours*365days*100years AUTO_LOGOUT = 52560000 创建一个中间件并将其添加到中间件部分的settings.py中 from datetime import datetime, timedelta from d

我正在使用Django Python。有没有办法设置会话永不过期

我不知道无限会话,但如果您使用会话中间件 使用大量的自动充电时间,它会工作

100年听起来还好吗

关于settings.py

# time in minutes
# 60min*24hours*365days*100years
AUTO_LOGOUT = 52560000
创建一个中间件并将其添加到中间件部分的settings.py中

from datetime import datetime, timedelta
from django.conf import settings
from django.contrib import auth
from django.utils.translation import ugettext as _

class AutoLogout:

    def process_request(self, request):

        if not request.user.is_authenticated():
            # Can't log out if is not logged in
            return
        try:
            # last click
            last_touch = datetime.strptime(request.session['last_touch'], "%Y-%m-%d %H:%M:%S.%f")
            # getting auto logout time
            auto_logout_time = settings.AUTO_LOGOUT

            try:
                if datetime.now() - last_touch > timedelta(0, auto_logout_time * 60, 0):
                    del request.session['last_touch']
                    auth.logout(request)
                    request.session['warning'] = unicode(_("You have been logged out"))
                    return
            except Exception as e:
                # It should not reach this point
                auth.logout(request)
                del request.session['last_touch']
                request.session['warning'] = unicode(_("You have been logged out"))

        except KeyError:
            pass

         request.session['last_touch'] = str(datetime.now())
从Django 1.4(及更高版本)开始,您还可以通过在设置文件中进行设置来设置会话的持续时间

SESSION_COOKIE_AGE
Default: 1209600 (2 weeks, in seconds)
The age of session cookies, in seconds.

我将使用默认超时,2周。无论如何,谢谢。100年听起来还好吗?哈哈哈@brunofitas52560000s==1.67年我想你忘了一个60的因子。@yspreen自体移植只需几分钟。因此,如果您想在30分钟不活动后注销,只需键入30而不是1800。@yspreen随后的分钟将转换为秒--“if datetime.now()-last\u touch>timedelta(0,自动注销\u time*60,0)”