Cookie
cookie是由服务器生成的,存储在浏览器端的一小段文本信息
cookie特点:
1.以键值对的方式存储
2.通过浏览器访问一个网站时,会将浏览器存储的跟网站相关的所有cookie信息发送给该网站的服务器。request.COOKIES
3.cookie是基于域名安全的
4.cookie是有过期时间的,如果不指定,默认关闭浏览器之后,cookie就会过期
cookie记住用户名
在login.html里设置一个checkbox按钮,用户勾选之后浏览器就能记住用户名
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
POST:提交的参数在请求头里,数据比较重要用post
GET:提交的参数在url中
用post方法提交到login_check页面中
<form method="post" action="/login_check">
用户名:<input type="text" name="username" value={{ username }}>
密码:<input type="password" name="password">
<input type="checkbox" name="remember">记住用户名
<input type="submit" value="登录">
</form>
</body>
</html>
id给前端获取,name给后端获取
login_check视图
def login_check(request):
'''登录校验视图'''
# 浏览器提交的信息就保存在request里面
# request.POST保存的是POST提交的参数
# request.GET保存的是GET提交的参数
# 1.获取提交的用户名和密码
username = request.POST.get('username')
passwoed = request.POST.get('password')
remember = request.POST.get('remember') # 记住用户名
# 2.进行登录校验
# 实际开发的时候,用户名和密码保存在数据库中
# 模拟
if username == 'zhangyue' and passwoed == '123456':
# 正确,跳转到首页index
response = redirect('/index') # 先要初始化httpresponese对象,redirect是他的子类,所以也可以用redirect设置
if remember == 'on':
response.set_cookie('username',username,max_age=7*24*3600)# 设置cookie
return response
else:
# 错误
return redirect('/login')
# 3.返回应答
视图通过html的name关键字remember = request.POST.get('remember') # 记住用户名
拿到勾选情况。先初始化httpResponse()对象,用response.set_cookie()函数设置cookie。
check视图函数
def login(request):
'''显示登录页面'''
# 获取cookie的username
if 'username' in request.COOKIES:
username = request.COOKIES['username']
else:
username = ''
return render(request, 'booktest/login.html',{'username':username})
request.COOKIES['username']
拿到username的cookie。
return render(request, 'booktest/login.html',{'username':username})
返回到浏览器的表单。
session
# /set_session
def set_session(request):
'''设置session'''
request.session['username'] = 'zhangyue'
request.session['age'] = 25
return HttpResponse('设置session')
# /get_session
def get_session(request):
'''获取session'''
username = request.session['username']
age = request.session['age']
return HttpResponse(username+str(age))
session的视图函数,使用方法和cookie很像
session和cookie的使用场景
cookie用在安全性不要求很高的场景,比如用户名
session用在安全性要求高的情况,比如银行卡的卡号密码。