Django会话(Session)的基本概念和用法

2023-04-11 00:00:00 会话 用法 基本概念

Django会话是一种跟踪用户操作的功能。它可以用来存储和检索有关当前用户的信息。

Django使用Session框架来管理会话。Session框架使用Session数据存储在服务器端,会话ID会存储在客户端的cookie中。

在Django中启用会话很简单,只需在settings.py中设置SESSION_ENGINE和SESSION_COOKIE_NAME。如下所示:

# settings.py
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_COOKIE_NAME = 'pidancode.com_session'

这里,我们将SESSION_ENGINE设置为django.contrib.sessions.backends.db,表示我们将使用数据库存储Session信息。SESSION_COOKIE_NAME设置为'pidancode.com_session',是会话存储在cookie中的名称。

要在视图中使用Session,首先需要导入它:

from django.contrib.sessions.backends.db import SessionStore

然后,可以使用SessionStore类来创建一个新的Session对象:

session = SessionStore()

现在,你可以添加任何你需要的数据到session中:

session['username'] = '皮蛋编程'
session['logged_in'] = True

在使用完Session之后,需要将数据保存回数据库:

session.save()

要访问Session中存储的数据,可以使用Session对象的get()方法:

username = session.get('username', '')
logged_in = session.get('logged_in', False)

这里,我们使用get()方法来访问Session中存储的'username'和'logged_in'值。get()方法允许我们提供一个默认值,以便在Session中没有该项数据时使用。

完整的示例如下:

# views.py
from django.contrib.sessions.backends.db import SessionStore

def home(request):
    session = SessionStore()
    session['username'] = '皮蛋编程'
    session['logged_in'] = True
    session.save()

    username = session.get('username', '')
    logged_in = session.get('logged_in', False)
    return render(request, 'home.html', {'username': username, 'logged_in': logged_in})

在本示例中,我们在home视图中创建了一个新的Session对象,并存储了用户名和已登录状态。然后,我们从Session中获取这些值,并将它们传递给home.html模板。

最后,我们需要启用会话支持,确保将'django.contrib.sessions'添加到INSTALLED_APPS,并且将SessionMiddleware添加到MIDDLEWARE中。如下所示:

# settings.py
INSTALLED_APPS = [
    # ...
    'django.contrib.sessions',
    # ...
]

MIDDLEWARE = [
    # ...
    'django.contrib.sessions.middleware.SessionMiddleware',
    # ...
]

这样,就可以在Django应用程序中使用会话了!

相关文章