1 cookies
1 cookies的概念
cookie指网站为了辨别用户身份,进行session跟踪而储存在 用户本地终端上 的数据(通常经过加密)。
cookie是由服务器端生成,发送给浏览器,浏览器会将cookie的key/value保存到某个目录下的文本文件内.
下次请求同一网站时就发送该cookie给服务器。cookie名称和值可以由服务器端开发自己定义.
这样服务器可以知道该用户是否是合法用户以及是否需要重新登录等。
服务器可以利用cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。
2 cookie的特点
cookie以键值对的格式进行信息的存储。
cookie基于域名安全,不同域名的cookie是不能互相访问的。
当浏览器请求某网站时,会将浏览器存储的跟网站相关的所有cookie信息提交给网站服务器。
3 设置cookie
可以通过HttpResponse对象中的set_cookie方法来设置cookie。
HttpResponse.set_cookie(cookie名, value=cookie值, max_age=cookie有效期)
max_age 单位为秒,默认为None。如果是临时cookie,可将max_age设置为None。
def demo_view(request):
response = HttpResponse('ok')
response.set_cookie('itcast1', 'python1') # 临时cookie
response.set_cookie('itcast2', 'python2', max_age=3600) # 有效期一小时
return response
4 读取cookie
可以通过HttpRequest对象的cookieS属性来读取本次请求携带的cookie值。request.cookieS为字典类型。
def demo_view(request):
cookie1 = request.cookieS.get('itcast1')
print(cookie1)
return HttpResponse('OK')
2 Session
1 启用Session
Django项目默认启用Session。可以在settings.py文件中查看,
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XframeOptionsMiddleware',
]
2 存储方式
2.1 数据库
存储在数据库中,如下设置可以写,也可以不写,这是默认存储方式。
SESSION_ENGINE='django.contrib.sessions.backends.db'
2.2 本地缓存
存储在本机内存中,如果丢失则不能找回,比数据库的方式读写更快。
SESSION_ENGINE='django.contrib.sessions.backends.cache'
2.3 混合存储
优先从本机内存中存取,如果没有则从数据库中存取。
SESSION_ENGINE='django.contrib.sessions.backends.cached_db'
3 Redis
1) 安装扩展
pip install django-redis
2)配置
# 修改Django的缓存,将默认的内存缓存,变成redis缓存
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"