在Django中,会话有两种类型:浏览器长度会话(browser-length sessions)和持久会话(persistent sessions)。

1. 浏览器长度会话(Browser-Length Sessions):

   浏览器长度会话是一种在用户关闭浏览器时自动终止的会话。这种类型的会话数据存储在浏览器的Cookie中,只在用户与服务器之间保持活动期间存在。一旦用户关闭浏览器,Cookie将被删除,会话数据也将不再可用。

   这是Django默认的会话配置。你可以在项目的 settings.py 文件中找到以下设置:
   # settings.py

   # 默认会话引擎和存储设置
   SESSION_ENGINE = 'django.contrib.sessions.backends.db'  # 使用数据库作为会话引擎
   SESSION_COOKIE_AGE = 1209600  # 会话Cookie的过期时间,单位是秒,默认为两周

   在这个例子中,SESSION_COOKIE_AGE 设置为两周,因此浏览器长度的会话将在两周后过期。

2. 持久会话(Persistent Sessions):

   持久会话是一种会话类型,会话数据在用户关闭浏览器后仍然保持有效。这通常是通过使用较长的过期时间(SESSION_COOKIE_AGE)或者使用“记住我”功能实现的。

   如果你希望会话在用户关闭浏览器后仍然保持有效,你可以设置 SESSION_COOKIE_AGE 为一个较大的值,或者使用 SESSION_SAVE_EVERY_REQUEST 设置,将每个请求视为活动请求,从而延长会话的生命周期。
   # settings.py

   # 设置SESSION_COOKIE_AGE为较大的值(例如一个月)
   SESSION_COOKIE_AGE = 2592000  # 一个月的秒数

   # 或者使用SESSION_SAVE_EVERY_REQUEST设置
   SESSION_SAVE_EVERY_REQUEST = True

   使用 SESSION_SAVE_EVERY_REQUEST 会使每个请求都被视为活动请求,从而每次请求都会刷新会话的过期时间,从而实现会话的持久性。

根据应用程序的需求,你可以选择使用浏览器长度的会话或持久会话。确保在 settings.py 中进行适当的配置,以满足你的具体需求。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7235/Django