📅  最后修改于: 2023-12-03 15:00:27.645000             🧑  作者: Mango
Django 会话是一种在 Web 应用程序中用于存储用户数据的机制。通过 django.contrib.sessions 应用程序,Django 在后端管理这些会话,使得开发人员可以轻松地将用户信息存储在会话中。
要使用 Django 会话功能,您需要打开 settings.py 文件并在 INSTALLED_APPS 中添加 'django.contrib.sessions' 应用程序。然后,在 MIDDLEWARE 中添加 'django.contrib.sessions.middleware.SessionMiddleware' 中间件类。
INSTALLED_APPS = [
...
'django.contrib.sessions',
...
]
MIDDLEWARE = [
...
'django.contrib.sessions.middleware.SessionMiddleware',
...
]
要将数据存储在会话中,您需要访问 request.session 对象,这是一个类似于 Python 字典的对象。
def my_view(request):
# 存储数据
request.session['username'] = 'john'
request.session['email'] = 'johndoe@example.com'
要获取存储在会话中的数据,您只需从 request.session 对象中读取相应的键。
def my_view(request):
# 读取数据
username = request.session['username']
email = request.session['email']
请注意,如果指定的键不存在,会引发 KeyError 异常。如果您不想使应用程序失败,可以使用 get() 方法获取数据而不是从字典中读取。
def my_view(request):
# 读取数据,如果键不存在则返回 None
username = request.session.get('username')
email = request.session.get('email')
要从会话中删除数据,您可以使用 del 关键字。
def my_view(request):
# 删除数据
del request.session['username']
您还可以使用 pop() 方法删除数据并返回该数据。如果键不存在,则 pop() 方法会引发 KeyError 异常。
def my_view(request):
# 删除数据并返回
username = request.session.pop('username', None)
默认情况下,Django 会话在关闭浏览器后仍然存在,并且在服务器上一段时间后才过期。您可以通过在 settings.py 中设置 SESSION_COOKIE_AGE 来覆盖这个时间。
SESSION_COOKIE_AGE = 60 * 60 * 24 * 7 # 一周
您还可以使用 set_expiry() 方法设置会话的过期时间。
def my_view(request):
# 设置过期时间为一周
request.session.set_expiry(60 * 60 * 24 * 7)
默认情况下,Django 将会话数据存储在数据库中。但是,您可以选择将会话数据存储在其他位置,例如缓存或文件系统中。要更改会话存储后端,您需要在 settings.py 文件中设置 SESSION_ENGINE。
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
Django 会话是一种非常有用的机制,可帮助存储用户数据。通过使用 SessionMiddleware 和 request.session 对象,您可以轻松地将用户信息存储在会话中,并在需要时访问它们。如果您希望进一步学习 Django 会话,请参阅官方文档。