Django 会话
会话是与 Web 应用程序进行交互期间在服务器端存储信息的机制。
在 Django 中,默认情况下会话存储在数据库中,还可以使用基于文件和缓存的会话。它是通过一个中间件实现的,并可以通过以下代码启用。
将 django.contrib.sessions.middleware.SessionMiddleware 放入 MIDDLEWARE 中,并将 django.contrib.sessions 放入 settings.py 文件的 INSTALLED_APPS 中。
要在视图中设置和获取会话,可以使用 request.session ,并且可以多次设置。
class backends.base.SessionBase 是所有会话对象的基类。它包含以下标准方法。
方法 | 描述 |
---|---|
__getitem__(key) |
用于获取会话值。 |
__setitem__(key, value) |
用于设置会话值。 |
__delitem__(key) |
用于删除会话对象。 |
__contains__(key) |
检查容器是否包含特定的会话对象。 |
get(key, default=None) |
用于获取指定键的会话值。 |
让我们来看一个例子,其中我们将设置和获取会话值。在 views.py 文件中定义了两个函数。
Django 会话示例
第一个函数用于设置会话值,第二个函数用于获取会话值。
//views.py
from django.shortcuts import render
from django.http import HttpResponse
def setsession(request):
request.session['sname'] = 'irfan'
request.session['semail'] = 'irfan.sssit@gmail.com'
return HttpResponse("session is set")
def getsession(request):
studentname = request.session['sname']
studentemail = request.session['semail']
return HttpResponse(studentname+" "+studentemail);
用于调用这两个函数的URL映射。
// urls.py
from django.contrib import admin
from django.urls import path
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', views.index),
path('ssession',views.setsession),
path('gsession',views.getsession)
]
运行服务器
$ python3 manage.py runserver
然后使用 localhost:8000/ssession 来设置会话
会话已设置,请检查使用 localhost:8000/gsession