cookie
PS:不设置过期时间的话,默认关闭浏览器就失效
from django.contrib.auth import login
中的login(request, user)
默认是两周
cookie的存
response.set_cookie('username',username)
response.set_signed_cookie('username',username,salt='asdasd') #带签名的cookie(加盐)
cookie的取
username = request.COOKIES.get('username')
username = request.get_signed_cookie('username',salt='asdasd') #获取带签名的cookie(盐要相同,不然拿不到)
cookie的删除
response.delete_cookie('username')
Ctrl + Shift + del三个键来清除页面缓存和cookie,将来这个操作你会用的很多。
session
PS:在django中,session默认的过期时间是两周
session的存
request.session['username'] = username
#上面这一句代码完成了以下事情:
#1、生成随机字符串
#2、将随机字符串写到用户浏览器cookie
#3、将随机字符串保存到服务器session
#4、在服务器随机字符串对应的字典中设置相关内容
session的取
username = request.session.get('username')
username = request.session['username'] #两种方式都可以取,但是这种如果没取到会报错
session的删除
request.session.flush() #删除所有session
del request.session['username'] #删除key为username的session
Django中的session配置
1. 数据库Session
SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(默认)
2. 缓存Session
SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎
SESSION_CACHE_ALIAS = 'default' # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置
3. 文件Session
SESSION_ENGINE = 'django.contrib.sessions.backends.file' # 引擎
SESSION_FILE_PATH = None # 缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir()
4. 缓存+数据库
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' # 引擎
5. 加密Cookie Session
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies' # 引擎
其他公用设置项:
SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)
SESSION_COOKIE_PATH = "/" # Session的cookie保存的路径(默认)
SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默认)
SESSION_COOKIE_SECURE = False # 是否Https传输cookie(默认)
SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输(默认)
SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)(默认)
SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期(默认)
SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存Session,默认修改之后才保存(默认)