📜  Django会话

📅  最后修改于: 2020-12-31 00:47:50             🧑  作者: Mango

Django会话

会话是一种在与Web应用程序交互期间将信息存储在服务器端的机制。

在Django中,默认情况下,会话存储在数据库中,并且还允许基于文件的会话和基于缓存的会话。它是通过一个中间件实现的,可以通过使用以下代码来启用。

django.contrib.sessions.middleware.SessionMiddleware放在MIDDLEWARE中,并将django.contrib.sessions放在settings.py文件的INSTALLED_APPS中。

要在视图中设置和获取会话,我们可以使用request.session ,也可以设置多次。

backends.base.SessionBase类是所有会话对象的基类。它包含以下标准方法。

Method Description
__getitem__(key) It is used to get session value.
__setitem__(key, value) It is used to set session value.
__delitem__(key) It is used to delete session object.
__contains__(key) It checks whether the container contains the particular session object or not.
get(key, default=None) It is used to get session value of the specified key.

让我们看一个示例,在该示例中我们将设置并获取会话值。 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);

网址映射可以调用这两个函数。

// 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