Diango教程-Django Session
会话是一种在与 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) | 用于获取指定key的session值。 |
让我们看一个设置和获取会话值的示例。views.py文件中定义了两个函数。
Django 会话示例
第一个函数用于设置,第二个函数用于获取会话值。
//视图.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 映射。
// url.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