会话是一种在与Web应用程序交互期间将信息存储在服务器端的机制。
在Django中, 默认情况下, 会话存储在数据库中, 并且还允许基于文件和基于缓存的会话。它是通过一个中间件实现的, 可以通过使用以下代码来启用。
将django.contrib.sessions.middleware.SessionMiddleware放在MIDDLEWARE中, 并将django.contrib.sessions放在settings.py文件的INSTALLED_APPS中。
要在视图中设置和获取会话, 我们可以使用request.session, 也可以设置多次。
backends.base.SessionBase类是所有会话对象的基类。它包含以下标准方法。
方法 | 描述 |
---|---|
__getitem__(key) | 它用于获取会话值。 |
__setitem__(key, value) | 用于设置会话值。 |
__delitem__(key) | 用于删除会话对象。 |
__contains__(key) | 它检查容器是否包含特定的会话对象。 |
get(key, default=None) | 用于获取指定键的会话值。 |
Django会话示例
第一个函数用于设置, 第二个函数用于获取会话值。
【Django会话session】//views.py
from django.shortcuts import renderfrom django.http import HttpResponsedef 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 adminfrom django.urls import pathfrom myapp import viewsurlpatterns = [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