#######cookie是存储在客服端上的一个文件(也可以说是键值对)
使用cookie来实现用户登入伪代码
def login(request):
if request.method == "GET":
return render(request,'login.html')
if request.method == "POST":
u = request.POST.get('username')
p = request.POST.get('pwd')
if """通过密码判断用户是否登入正确,如果正确进行下面的操作""":
res = redirect('/index/')
res.set_cookie('username111',u)
res.set_cookie('cookie的key',"cookie的value")
return res #然后把cookie给客户端
else:
return render(request,'login.html')
下次访问其他页面的时候我们就可以通过request.COOKIES.get('上次cookie的key')来判断用户是否在服务器上有相应的值
rep.set_signed_cookie(key,value,salt='加密盐',...)
参数:
key, 键
value='', 值
max_age=None, 超时时间
expires=None, 超时时间(IE requires expires, so set it if hasn't been already.)
path='/', Cookie生效的路径,/ 表示根路径,特殊的:跟路径的cookie可以被任何url的页面访问
domain=None, Cookie生效的域名
secure=False, https传输
httponly=False 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)
前端也可以获取到cookie
<script src='/static/js/jquery.cookie.js'></script>
$.cookie("list_pager_num", 30,{ path: '/' });
什么是session
session时放在服务端的(数据库,文件等等地方),我们可以把它看作一个大的字典(request.session),每个用户的随机字符串作为键,用户的信息作为值,一般来说单独用sesion是没意义的,一般是与cookie联合使用
session生成步骤:
1.生成随机字符串
2.想随机字符串写在cookie中
3.把随机字符串写在session中
4.在随机字符串对应的字典中写入值
在django中写request.session['用户信息']='值'就可以完成以上的所有操作
常用操作
request.session.get()获取值,获取字典的操作都可以使用
request.session.set_expiry() 设置超时时间
request.session.clear() 清除垃圾信息(比如过时信息)
在setting.py中常常对session进行的设置
SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认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,默认修改之后才保存(默认)
实现30天免登录
request.session.set_expiry(60*60*24*30)
SESSION_SAVE_EVERY_REQUEST = True